Purpose: Create a set of QC requirements for pre-release files which should pass before hand off between BIXU Engineering team to the OpenPedCan team.

Usage

To run this from the command line, use:

Rscript -e "rmarkdown::render('data-pre-release-qc.Rmd', clean = TRUE)"

This assumes you are in the modules directory of the repository, OpenPedCan-analysis/analyses/data-pre-release-qc.

Setup

  • Load libraries
# R analysis packages
suppressPackageStartupMessages(library(tidyverse))
suppressPackageStartupMessages(library(data.table))

# Magrittr pipe
`%>%` <- dplyr::`%>%`
  • Set up directories.
# directories for input and output files
root_dir <- rprojroot::find_root(rprojroot::has_dir(".git"))
data_dir <- file.path(root_dir, "data")
analyses_dir <- file.path(root_dir, "analyses")
results_dir <- file.path(analyses_dir, "data-pre-release-qc", "results")

# Create results folder if it doesn't exist
if (!dir.exists(results_dir)) {
  dir.create(results_dir)
}

Functions

  • Output table function
missing_biospecimen_table <- function(hist_df, missing_ids, output_file) {
  missing_ids_df <- hist_df %>% 
    dplyr::filter(Kids_First_Biospecimen_ID %in% missing_ids) %>% 
    dplyr::select(Kids_First_Biospecimen_ID, 
                  Kids_First_Participant_ID,
                  experimental_strategy,
                  sample_type,
                  RNA_library, 
                  cohort)
  readr::write_tsv(missing_ids_df, file.path(results_dir, output_file))
  return(missing_ids_df)
}

Histologies file

  • Load histologies file
# read file
hist_df <- readr::read_tsv(file.path(data_dir, "histologies-base.tsv"), 
                           guess_max = 10000,
                           col_types = cols(.default = col_guess()))

Check OpenPedCan RNA-Seq biospecimen IDs

  • Expected counts matrix (gene-counts-rsem-expected_count-collapsed.rds)
# get OpenPedCan rnaseq biospecimen ids
hist_ids <- hist_df %>%
  filter(experimental_strategy == "RNA-Seq", cohort != "TCGA") %>%
  dplyr::pull(Kids_First_Biospecimen_ID)

# check that all OpenPedCan RNA-Seq biospecimen IDs are in the expected count expression matrix
biospecimen_ids <- readr::read_rds(file.path(data_dir,
                                        "gene-counts-rsem-expected_count-collapsed.rds")) %>%
  colnames()
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-gene-counts-rsem-expected_count-collapsed.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("RNA-Seq biospecimen in histolgies missing in gene-counts-rsem-expected_count-collapsed.rds = ", length(missing_ids)))
[1] "RNA-Seq biospecimen in histolgies missing in gene-counts-rsem-expected_count-collapsed.rds =  17382"
if (length(missing_hist_ids) > 0) {
  output_file <- "gene-counts-rsem-expected_count-collapsed-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("RNA-Seq biospecimen in gene-counts-rsem-expected_count-collapsed.rds missing in histolgies = ", length(missing_hist_ids)))
[1] "RNA-Seq biospecimen in gene-counts-rsem-expected_count-collapsed.rds missing in histolgies =  0"
  • TPM matrix (gene-expression-rsem-tpm-collapsed.rds)
# check that all OpenPedCan RNA-Seq biospecimen IDs are in the tpm expression matrix
biospecimen_ids <- readr::read_rds(file.path(data_dir,
                                        "gene-expression-rsem-tpm-collapsed.rds")) %>%
  colnames()
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-gene-expression-rsem-tpm-collapsed.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("RNA-Seq biospecimen in histolgies missing in gene-expression-rsem-tpm-collapsed.rds = ", length(missing_ids)))
[1] "RNA-Seq biospecimen in histolgies missing in gene-expression-rsem-tpm-collapsed.rds =  17382"
if (length(missing_hist_ids) > 0) {
  output_file <- "gene-expression-rsem-tpm-collapsed-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("RNA-Seq biospecimen in gene-expression-rsem-tpm-collapsed.rds missing in histolgies = ", length(missing_hist_ids)))
[1] "RNA-Seq biospecimen in gene-expression-rsem-tpm-collapsed.rds missing in histolgies =  0"
  • Isoform TPM matrix (rna-isoform-expression-rsem-tpm.rds)
# exclude GTEx biospecimen when checking isoform matrix
isoform_hist_ids <-  hist_df %>%
  filter(experimental_strategy == "RNA-Seq", !cohort %in% c("TCGA","GTEx")) %>%
  dplyr::pull(Kids_First_Biospecimen_ID)

# check that all OpenPedCan RNA-Seq biospecimen IDs are in the tpm expression matrix
biospecimen_ids <- readr::read_rds(file.path(data_dir,
                                        "rna-isoform-expression-rsem-tpm.rds")) %>%
  dplyr::select(-c("transcript_id", "gene_symbol")) %>%
  colnames()
missing_ids <- setdiff(isoform_hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, isoform_hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-rna-isoform-expression-rsem-tpm.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("RNA-Seq biospecimen in histolgies missing in rna-isoform-expression-rsem-tpm.rds = ", length(missing_ids)))
[1] "RNA-Seq biospecimen in histolgies missing in rna-isoform-expression-rsem-tpm.rds =  0"
if (length(missing_hist_ids) > 0) {
  output_file <- "rna-isoform-expression-rsem-tpm-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("RNA-Seq biospecimen in rna-isoform-expression-rsem-tpm.rds missing in histolgies = ", length(missing_hist_ids)))
[1] "RNA-Seq biospecimen in rna-isoform-expression-rsem-tpm.rds missing in histolgies =  14"

Check TCGA RNA-Seq biospecimen IDs

  • TPM matrix (tcga-gene-expression-rsem-tpm-collapsed.rds)
# get tcga rnaseq biospecimen ids
hist_ids <- hist_df %>%
  filter(experimental_strategy == "RNA-Seq", cohort == "TCGA") %>%
  dplyr::pull(Kids_First_Biospecimen_ID)

# check that all TCGA RNA-Seq biospecimen IDs are in the tpm expression matrix
biospecimen_ids <- readr::read_rds(file.path(data_dir,
                                        "tcga-gene-expression-rsem-tpm-collapsed.rds")) %>%
  colnames()
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-tcga-gene-expression-rsem-tpm-collapsed.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("RNA-Seq biospecimen in histolgies missing in tcga-gene-expression-rsem-tpm-collapsed.rds = ", length(missing_ids)))
[1] "RNA-Seq biospecimen in histolgies missing in tcga-gene-expression-rsem-tpm-collapsed.rds =  3"
if (length(missing_hist_ids) > 0) {
  output_file <- "tcga-gene-expression-rsem-tpm-collapsed-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("RNA-Seq biospecimen in tcga-gene-expression-rsem-tpm-collapsed.rds missing in histolgies = ", length(missing_hist_ids)))
[1] "RNA-Seq biospecimen in tcga-gene-expression-rsem-tpm-collapsed.rds missing in histolgies =  712"

Check gene symbols in gene expression matrices

  • RNA-Seq expression matrices
# OPC counts matrix
opc_counts <-
  tibble::tibble(OPC_COUNTS =
    readr::read_rds(file.path(data_dir, "gene-counts-rsem-expected_count-collapsed.rds")) %>%
      rownames() %>% unique()) %>%
  dplyr::mutate(gene_symbol = OPC_COUNTS)

# OPC tpm matrix
opc_tpm <-
  tibble::tibble(OPC_TPM =
    readr::read_rds(file.path(data_dir, "gene-expression-rsem-tpm-collapsed.rds")) %>%
      rownames() %>% unique()) %>%
  dplyr::mutate(gene_symbol = OPC_TPM)

# # TCGA counts matrix
# tcga-counts <-
#   tibble::tibble(TCGA_COUNTS =
#     readr::read_rds(file.path(data_dir, "tcga-gene-counts-rsem-expected_count-collapsed.rds")) %>%
#       rownames() %>% unique()) %>%
#   dplyr::mutate(gene_symbol = TCGA_COUNTS)

# TCGA tpm matrix
tcga_tpm <-
  tibble::tibble(TCGA_TPM =
    readr::read_rds(file.path(data_dir, "tcga-gene-expression-rsem-tpm-collapsed.rds")) %>%
      rownames() %>% unique()) %>%
  dplyr::mutate(gene_symbol = TCGA_TPM)

# merge and list differences
gene_symbol_diffs <- opc_counts %>%
  dplyr::full_join(opc_tpm, by = "gene_symbol") %>%
  dplyr::full_join(tcga_tpm, by = "gene_symbol") %>%
  dplyr::select(-gene_symbol) %>%
  dplyr::filter(is.na(OPC_COUNTS) | is.na(OPC_TPM) | is.na(TCGA_TPM)) %>%
  dplyr::distinct()

# check any differences in gene symbols among gene matrices
if (length(rownames(gene_symbol_diffs)) > 0) {
  output_file <- "genes_not_in_all_gene_expression_matrices.tsv"
  gene_symbol_diffs %>% readr::write_tsv(file.path(results_dir, output_file))
  gene_symbol_diffs
}
print(paste("Genes not matching all expression matrices =", length(rownames(gene_symbol_diffs))))
[1] "Genes not matching all expression matrices = 27245"

Check methylation matrices biospecimen IDs

  • Beta-values matrix (methyl-beta-values.rds)
# get beta-values methylation biospecimen ids
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy == "Methylation") %>%
  dplyr::pull(Kids_First_Biospecimen_ID)

# check that all methylation biospecimen IDs are in the beta-values methylation matrix
biospecimen_ids <- readr::read_rds(file.path(data_dir, "methyl-beta-values.rds")) %>%
  dplyr::select(-Probe_ID) %>%
  colnames()
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-methyl-beta-values.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("Methylation biospecimen in histolgies missing in methyl-beta-values.rds = ", length(missing_ids)))
[1] "Methylation biospecimen in histolgies missing in methyl-beta-values.rds =  717"
if (length(missing_hist_ids) > 0) {
  output_file <- "methyl-beta-values-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("Methylation biospecimen in methyl-beta-values.rds missing in histolgies = ", length(missing_hist_ids)))
[1] "Methylation biospecimen in methyl-beta-values.rds missing in histolgies =  717"
  • M-values matrix (methyl-m-values.rds)
# check that all methylation biospecimen IDs are in the m-values methylation matrix
biospecimen_ids <- readr::read_rds(file.path(data_dir, "methyl-m-values.rds")) %>%
  dplyr::select(-Probe_ID) %>%
  colnames()
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-methyl-m-values.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("Methylation biospecimen in histolgies missing in methyl-m-values.rds = ", length(missing_ids)))
[1] "Methylation biospecimen in histolgies missing in methyl-m-values.rds =  717"
if (length(missing_hist_ids) > 0) {
  output_file <- "methyl-m-values-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("Methylation biospecimen in methyl-m-values.rds missing in histolgies = ", length(missing_hist_ids)))
[1] "Methylation biospecimen in methyl-m-values.rds missing in histolgies =  717"
  • CN-values matrix (methyl-m-values.rds)
# check that all methylation biospecimen IDs are in the m-values methylation matrix
biospecimen_ids <- readr::read_rds(file.path(data_dir, "methyl-cn-values.rds")) %>%
  dplyr::select(-Probe_ID) %>%
  colnames()
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-methyl-cn-values.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("Methylation biospecimen in histolgies missing in methyl-cn-values.rds = ", length(missing_ids)))
[1] "Methylation biospecimen in histolgies missing in methyl-cn-values.rds =  717"
if (length(missing_hist_ids) > 0) {
  output_file <- "methyl-cn-values-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("Methylation biospecimen in methyl-cn-values.rds missing in histolgies = ", length(missing_hist_ids)))
[1] "Methylation biospecimen in methyl-cn-values.rds missing in histolgies =  717"

Check methylation matrices probe IDs

  • Methylation matrices
# beta-values matrix
beta_values <-
  tibble::tibble(beta_values =
    readr::read_rds(file.path(data_dir, "methyl-beta-values.rds")) %>%
      dplyr::pull(Probe_ID) %>% unique()) %>%
  dplyr::mutate(probe_id = beta_values)

# m-values matrix
m_values <-
  tibble::tibble(m_values =
    readr::read_rds(file.path(data_dir, "methyl-m-values.rds")) %>%
      dplyr::pull(Probe_ID) %>% unique()) %>%
  dplyr::mutate(probe_id = m_values)

# cn-values matrix
cn_values <-
  tibble::tibble(cn_values =
    readr::read_rds(file.path(data_dir, "methyl-cn-values.rds")) %>%
      dplyr::pull(Probe_ID) %>% unique()) %>%
  dplyr::mutate(probe_id = cn_values)

# merge and list differences
probe_id_diffs <- beta_values %>%
  dplyr::full_join(m_values, by = "probe_id") %>%
  dplyr::full_join(cn_values, by = "probe_id") %>%
  dplyr::select(-probe_id) %>%
  dplyr::filter(is.na(beta_values) | is.na(m_values) | is.na(cn_values)) %>%
  dplyr::distinct()

# check any differences in probe IDs among methyl matrices
if (length(rownames(probe_id_diffs)) > 0) {
  output_file <- "probes_not_in_all_methyl_matrices.tsv"
  gene_symbol_diffs %>% readr::write_tsv(file.path(results_dir, output_file))
  gene_symbol_diffs
}
print(paste("Probes not matching all methylation matrices =", length(rownames(probe_id_diffs))))
[1] "Probes not matching all methylation matrices = 0"

Check DNA SNV, CNV and SV biospecimen IDs

  • CNVkit seg file (cnv-cnvkit.seg.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- readr::read_tsv(file.path(data_dir, "cnv-cnvkit.seg.gz")) %>%
  dplyr::pull(ID) %>%
  unique()
Rows: 4297481 Columns: 7
-- Column specification --------------------------------------------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (2): ID, chrom
dbl (5): loc.start, loc.end, num.mark, seg.mean, copy.num

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy %in% c("WGS", "WXS", "Targeted Sequencing"),
                is.na(RNA_library),
                sample_type == "Tumor",
                cohort != "DGD") %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-cnv-cnvkit.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("DNA biospecimen in histolgies missing in cnv-cnvkit.seg.gz = ", length(missing_ids)))
[1] "DNA biospecimen in histolgies missing in cnv-cnvkit.seg.gz =  293"
if (length(missing_hist_ids) > 0) {
  output_file <- "cnv-cnvkit.seg-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("DNA biospecimen in cnv-cnvkit.seg.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "DNA biospecimen in cnv-cnvkit.seg.gz missing in histolgies =  0"
  • Control-FREEC file (cnv-controlfreec.tsv.gz)
# check that all  biospecimen IDs are in the file
biospecimen_ids <- readr::read_tsv(file.path(data_dir, "cnv-controlfreec.tsv.gz")) %>%
  dplyr::pull(Kids_First_Biospecimen_ID) %>%
  unique()
Rows: 3123454 Columns: 11
-- Column specification --------------------------------------------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (4): Kids_First_Biospecimen_ID, chr, status, genotype
dbl (7): start, end, copy number, uncertainty, WilcoxonRankSumTestPvalue, Ko...

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy %in% c("WGS", "WXS", "Targeted Sequencing"),
                is.na(RNA_library),
                sample_type == "Tumor",
                cohort != "DGD",) %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-cnv-controlfreec.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("DNA biospecimen in histolgies missing in cnv-controlfreec.tsv.gz = ", length(missing_ids)))
[1] "DNA biospecimen in histolgies missing in cnv-controlfreec.tsv.gz =  293"
if (length(missing_hist_ids) > 0) {
  output_file <- "cnv-controlfreec-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("DNA biospecimen in cnv-controlfreec.tsv.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "DNA biospecimen in cnv-controlfreec.tsv.gz missing in histolgies =  0"
  • GATK seg file (cnv-gatk.seg.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- readr::read_tsv(file.path(data_dir, "cnv-gatk.seg.gz")) %>%
  dplyr::pull(BS_ID) %>%
  unique()
Rows: 1732889 Columns: 7
-- Column specification --------------------------------------------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (3): BS_ID, CONTIG, CALL
dbl (4): START, END, NUM_POINTS_COPY_RATIO, MEAN_LOG2_COPY_RATIO

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy %in% c("WGS", "WXS", "Targeted Sequencing"),
                is.na(RNA_library),
                sample_type == "Tumor",
                cohort != "DGD",) %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-cnv-gatk.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("DNA biospecimen in histolgies missing in cnv-gatk.seg.gz = ", length(missing_ids)))
[1] "DNA biospecimen in histolgies missing in cnv-gatk.seg.gz =  2029"
if (length(missing_hist_ids) > 0) {
  output_file <- "cnv-gatk-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("DNA biospecimen in cnv-gatk.seg.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "DNA biospecimen in cnv-gatk.seg.gz missing in histolgies =  0"
  • SNV consensus MAF file (snv-consensus-plus-hotspots.maf.tsv.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- data.table::fread(file.path(data_dir,
                                               "snv-consensus-plus-hotspots.maf.tsv.gz"),
                                     data.table = FALSE) %>%
  dplyr::pull(Tumor_Sample_Barcode) %>%
  unique()
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy %in% c("WGS", "WXS", "Targeted Sequencing"),
                is.na(RNA_library),
                sample_type == "Tumor",
                cohort != "DGD",) %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-snv-consensus-plus-hotspots.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("DNA biospecimen in histolgies missing in snv-consensus-plus-hotspots.maf.tsv.gz = ", length(missing_ids)))
[1] "DNA biospecimen in histolgies missing in snv-consensus-plus-hotspots.maf.tsv.gz =  356"
if (length(missing_hist_ids) > 0) {
  output_file <- "snv-consensus-plus-hotspots-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("DNA biospecimen in snv-consensus-plus-hotspots.maf.tsv.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "DNA biospecimen in snv-consensus-plus-hotspots.maf.tsv.gz missing in histolgies =  0"
  • SNV DGD MAF file (snv-dgd.maf.tsv.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- data.table::fread(file.path(data_dir,
                                               "snv-dgd.maf.tsv.gz"),
                                     data.table = FALSE) %>%
  dplyr::pull(Tumor_Sample_Barcode) %>%
  unique()
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy %in% c("WGS", "WXS", "Targeted Sequencing"),
                is.na(RNA_library),
                sample_type == "Tumor",
                cohort == "DGD") %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-snv-dgd.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("DNA biospecimen in histolgies missing in snv-dgd.maf.tsv.gz = ", length(missing_ids)))
[1] "DNA biospecimen in histolgies missing in snv-dgd.maf.tsv.gz =  0"
if (length(missing_hist_ids) > 0) {
  output_file <- "snv-dgd-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("DNA biospecimen in snv-dgd.maf.tsv.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "DNA biospecimen in snv-dgd.maf.tsv.gz missing in histolgies =  0"
  • SV Manta file (sv-manta.tsv.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- data.table::fread(file.path(data_dir,
                                               "sv-manta.tsv.gz"),
                                     data.table = FALSE) %>%
  dplyr::pull(Kids.First.Biospecimen.ID.Tumor) %>%
  unique()
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy %in% c("WGS", "WXS", "Targeted Sequencing"),
                is.na(RNA_library),
                sample_type == "Tumor",
                cohort != "DGD") %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-sv-manta"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("DNA biospecimen in histolgies missing in sv-manta.tsv.gz = ", length(missing_ids)))
[1] "DNA biospecimen in histolgies missing in sv-manta.tsv.gz =  2131"
if (length(missing_hist_ids) > 0) {
  output_file <- "sv-manta-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("DNA biospecimen in sv-manta.tsv.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "DNA biospecimen in sv-manta.tsv.gz missing in histolgies =  20"
  • Biospecimen to bed file mapping (biospecimen_id_to_bed_map.tsv)
# check that all biospecimen IDs have associated with a bed file
biospecimen_ids <- readr::read_tsv(file.path(data_dir, "biospecimen_id_to_bed_map.tsv")) %>%
  dplyr::pull(Kids_First_Biospecimen_ID) %>%
  unique()
Rows: 5654 Columns: 2
-- Column specification --------------------------------------------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (2): Kids_First_Biospecimen_ID, bed_to_use

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy %in% c("WGS", "WXS", "Targeted Sequencing"),
                is.na(RNA_library),
                sample_type == "Tumor",
                cohort != "DGD") %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-biospecimen_id_to_bed_map.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("DNA biospecimen in histolgies missing in biospecimen_id_to_bed_map.tsv = ", length(missing_ids)))
[1] "DNA biospecimen in histolgies missing in biospecimen_id_to_bed_map.tsv =  18"
if (length(missing_hist_ids) > 0) {
  output_file <- "biospecimen_id_to_bed_map-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("DNA biospecimen in biospecimen_id_to_bed_map.tsv missing in histolgies = ", length(missing_hist_ids)))
[1] "DNA biospecimen in biospecimen_id_to_bed_map.tsv missing in histolgies =  1062"

Check RNA splice events and fusions biospecimen IDs

  • rMATS file (splice-events-rmats.tsv.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- data.table::fread(file.path(data_dir,
                                               "splice-events-rmats.tsv.gz"),
                                     data.table = FALSE) %>%
  dplyr::pull(sample_id) %>%
  unique()
Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection

Warning in writeBin(bfr, con = out, size = 1L): problem writing to connection
Avoidable 22.647 seconds. This file is very unusual: it ends abruptly without a final newline, and also its size is a multiple of 4096 bytes. Please properly end the last row with a newline using for example 'echo >> file' to avoid this  time to copy.
Warning in data.table::fread(file.path(data_dir, "splice-events-
rmats.tsv.gz"), : Discarded single-line footer: <<A5SS BS_TTFXH10A NA
ENSG00000221914.11 PPP2R2A chr8 + NA NA NA NA NA NA NA NA NA NA NA NA 26293665.0
26>>
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy == "RNA-Seq",
                sample_type == "Tumor",
                cohort != "TCGA") %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-splice-events-rmats.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("RNA biospecimen in histolgies missing in splice-events-rmats.tsv.gz = ", length(missing_ids)))
[1] "RNA biospecimen in histolgies missing in splice-events-rmats.tsv.gz =  1365"
if (length(missing_hist_ids) > 0) {
  output_file <- "splice-events-rmats-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("RNA biospecimen in splice-events-rmats.tsv.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "RNA biospecimen in splice-events-rmats.tsv.gz missing in histolgies =  14"
  • AnnoFuse file (fusion-annoFuse.tsv.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- readr::read_tsv(file.path(data_dir, "fusion-annoFuse.tsv.gz")) %>%
  dplyr::pull(Sample) %>%
  unique()
Rows: 232319 Columns: 22
-- Column specification --------------------------------------------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (18): Sample, FusionName, LeftBreakpoint, RightBreakpoint, Caller, Fusio...
dbl  (3): JunctionReadCount, SpanningFragCount, SpanningDelta
lgl  (1): reciprocal_exists

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy == "RNA-Seq" | 
                  experimental_strategy == "Targeted Sequencing", 
                !is.na(RNA_library), 
                sample_type == "Tumor",
                !cohort %in% c("DGD", "TCGA")) %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-fusion-annoFuse.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("RNA biospecimen in histolgies missing in fusion-annoFuse.tsv.gz = ", length(missing_ids)))
[1] "RNA biospecimen in histolgies missing in fusion-annoFuse.tsv.gz =  3"
if (length(missing_hist_ids) > 0) {
  output_file <- "fusion-annoFuse-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("RNA biospecimen in fusion-annoFuse.tsv.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "RNA biospecimen in fusion-annoFuse.tsv.gz missing in histolgies =  1122"
  • Arriba fusion file (fusion-arriba.tsv.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- readr::read_tsv(file.path(data_dir, "fusion-arriba.tsv.gz")) %>%
  dplyr::pull(tumor_id) %>%
  unique()
Rows: 282056 Columns: 33
-- Column specification --------------------------------------------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (28): gene1, gene2, strand1.gene.fusion., strand2.gene.fusion., breakpoi...
dbl  (5): split_reads1, split_reads2, discordant_mates, coverage1, coverage2

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy == "RNA-Seq" |
                  experimental_strategy == "Targeted Sequencing", 
                !is.na(RNA_library), 
                sample_type == "Tumor",
                !cohort %in% c("DGD", "TCGA")) %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-fusion-annoFuse.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("RNA biospecimen in histolgies missing in fusion-arriba.tsv.gz = ", length(missing_ids)))
[1] "RNA biospecimen in histolgies missing in fusion-arriba.tsv.gz =  3"
if (length(missing_hist_ids) > 0) {
  output_file <- "fusion-annoFuse-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("RNA biospecimen in fusion-arriba.tsv.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "RNA biospecimen in fusion-arriba.tsv.gz missing in histolgies =  1126"
  • STAR-Fusion file (fusion-starfusion.tsv.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- readr::read_tsv(file.path(data_dir, "fusion-starfusion.tsv.gz")) %>%
  dplyr::pull(tumor_id) %>%
  unique()
Rows: 12694 Columns: 28
-- Column specification --------------------------------------------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (21): FusionName, SpliceType, LeftGene, LeftBreakpoint, RightGene, Right...
dbl  (7): JunctionReadCount, SpanningFragCount, est_J, est_S, FFPM, LeftBrea...

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy == "RNA-Seq" |
                  experimental_strategy == "Targeted Sequencing",
                !is.na(RNA_library), 
                sample_type == "Tumor",
                !cohort %in% c("DGD", "TCGA")) %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-fusion-starfusion.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("RNA biospecimen in histolgies missing in fusion-starfusion.tsv.gz = ", length(missing_ids)))
[1] "RNA biospecimen in histolgies missing in fusion-starfusion.tsv.gz =  323"
if (length(missing_hist_ids) > 0) {
  output_file <- "fusion-starfusion-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("RNA biospecimen in fusion-starfusion.tsv.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "RNA biospecimen in fusion-starfusion.tsv.gz missing in histolgies =  972"
  • Fusion DGD file (fusion-dgd.tsv.gz)
# check that all biospecimen IDs are in the file
biospecimen_ids <- readr::read_tsv(file.path(data_dir, "fusion-dgd.tsv.gz")) %>%
  dplyr::pull(Sample) %>%
  unique()
Rows: 278 Columns: 17
-- Column specification --------------------------------------------------------------------------------------------------------------------------------------
Delimiter: "\t"
chr (9): Sample, FusionName, Fusion_Type, Gene1A, Gene1B, annots, Gene1A_ann...
dbl (2): JunctionReadCount, SpanningFragCount
lgl (6): Gene2A, Gene2B, LeftBreakpoint, RightBreakpoint, Gene2A_anno, Gene2...

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
hist_ids <- hist_df %>%
  dplyr::filter(experimental_strategy %in% c("RNA-Seq", "Targeted Sequencing"), 
                !is.na(RNA_library),
                sample_type == "Tumor",
                cohort == "DGD") %>%
  dplyr::pull(Kids_First_Biospecimen_ID)
missing_ids <- setdiff(hist_ids, biospecimen_ids)
missing_hist_ids <- setdiff(biospecimen_ids, hist_ids)
if (length(missing_ids) > 0) {
  output_file <- "histologies-samples-missing-in-fusion-dgd.tsv"
  missing_ids_df <- missing_biospecimen_table(hist_df, missing_ids, output_file)
  missing_ids_df
}
print(paste("RNA biospecimen in histolgies missing in fusion-dgd.tsv.gz = ", length(missing_ids)))
[1] "RNA biospecimen in histolgies missing in fusion-dgd.tsv.gz =  612"
if (length(missing_hist_ids) > 0) {
  output_file <- "fusion-dgd-samples-missing-in-histologies.tsv"
  missing_hist_ids_df <- tibble::tibble(Kids_First_Biospecimen_ID = missing_hist_ids)
  missing_hist_ids_df %>% readr::write_tsv(file.path(results_dir, output_file))
  missing_hist_ids_df
}
print(paste("RNA biospecimen in fusion-dgd.tsv.gz missing in histolgies = ", length(missing_hist_ids)))
[1] "RNA biospecimen in fusion-dgd.tsv.gz missing in histolgies =  0"

Session Info

sessionInfo() 
R version 4.1.3 (2022-03-10)
Platform: x86_64-conda-linux-gnu (64-bit)
Running under: Ubuntu 16.04.6 LTS

Matrix products: default
BLAS/LAPACK: /home/ubuntu/volume/miniconda3/lib/libopenblasp-r0.3.20.so

locale:
 [1] LC_CTYPE=C                 LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] data.table_1.14.2 forcats_0.5.2     stringr_1.4.1     dplyr_1.0.10     
 [5] purrr_0.3.4       readr_2.1.2       tidyr_1.2.0       tibble_3.1.8     
 [9] ggplot2_3.3.6     tidyverse_1.3.2  

loaded via a namespace (and not attached):
 [1] lubridate_1.8.0     assertthat_0.2.1    rprojroot_2.0.3    
 [4] digest_0.6.29       utf8_1.2.2          R6_2.5.1           
 [7] cellranger_1.1.0    backports_1.4.1     reprex_2.0.2       
[10] evaluate_0.16       httr_1.4.4          pillar_1.8.1       
[13] rlang_1.0.5         googlesheets4_1.0.1 readxl_1.4.1       
[16] jquerylib_0.1.4     R.oo_1.25.0         R.utils_2.12.0     
[19] rmarkdown_2.16      googledrive_2.0.0   bit_4.0.4          
[22] munsell_0.5.0       broom_1.0.1         compiler_4.1.3     
[25] modelr_0.1.9        xfun_0.32           pkgconfig_2.0.3    
[28] htmltools_0.5.3     tidyselect_1.1.2    fansi_1.0.3        
[31] crayon_1.5.1        tzdb_0.3.0          dbplyr_2.2.1       
[34] withr_2.5.0         R.methodsS3_1.8.2   grid_4.1.3         
[37] jsonlite_1.8.0      gtable_0.3.1        lifecycle_1.0.1    
[40] DBI_1.1.3           magrittr_2.0.3      scales_1.2.1       
[43] cli_3.3.0           stringi_1.7.8       vroom_1.5.7        
[46] cachem_1.0.6        fs_1.5.2            xml2_1.3.3         
[49] bslib_0.4.0         ellipsis_0.3.2      generics_0.1.3     
[52] vctrs_0.4.1         tools_4.1.3         bit64_4.0.5        
[55] glue_1.6.2          hms_1.1.2           parallel_4.1.3     
[58] fastmap_1.1.0       yaml_2.3.5          colorspace_2.0-3   
[61] gargle_1.2.1        rvest_1.0.3         knitr_1.40         
[64] haven_2.5.1         sass_0.4.2         
LS0tCnRpdGxlOiAiRGF0YSBQcmUtcmVsZWFzZSBRQyIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOgogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIHRvY19kZXB0aDogNAphdXRob3I6IEVyaWMgV2FmdWxhIGZvciBQZWRpYXRyaWMgT3BlblRhcmdldHMKZGF0ZTogMDkvMDQvMjAyMgotLS0KClB1cnBvc2U6IENyZWF0ZSBhIHNldCBvZiBRQyByZXF1aXJlbWVudHMgZm9yIHByZS1yZWxlYXNlIGZpbGVzIHdoaWNoIHNob3VsZCBwYXNzIGJlZm9yZSBoYW5kIG9mZiBiZXR3ZWVuIEJJWFUgRW5naW5lZXJpbmcgdGVhbSB0byB0aGUgT3BlblBlZENhbiB0ZWFtLgoKCiMjIyMgVXNhZ2UKClRvIHJ1biB0aGlzIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgdXNlOgpgYGAKUnNjcmlwdCAtZSAicm1hcmtkb3duOjpyZW5kZXIoJ2RhdGEtcHJlLXJlbGVhc2UtcWMuUm1kJywgY2xlYW4gPSBUUlVFKSIKYGBgCl9UaGlzIGFzc3VtZXMgeW91IGFyZSBpbiB0aGUgbW9kdWxlcyBkaXJlY3Rvcnkgb2YgdGhlIHJlcG9zaXRvcnksIE9wZW5QZWRDYW4tYW5hbHlzaXMvYW5hbHlzZXMvZGF0YS1wcmUtcmVsZWFzZS1xYy5fCgojIyMjIFNldHVwCgotIExvYWQgbGlicmFyaWVzCmBgYHtyfQojIFIgYW5hbHlzaXMgcGFja2FnZXMKc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKGxpYnJhcnkodGlkeXZlcnNlKSkKc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKGxpYnJhcnkoZGF0YS50YWJsZSkpCgojIE1hZ3JpdHRyIHBpcGUKYCU+JWAgPC0gZHBseXI6OmAlPiVgCmBgYAoKLSBTZXQgdXAgZGlyZWN0b3JpZXMuIApgYGB7cn0KIyBkaXJlY3RvcmllcyBmb3IgaW5wdXQgYW5kIG91dHB1dCBmaWxlcwpyb290X2RpciA8LSBycHJvanJvb3Q6OmZpbmRfcm9vdChycHJvanJvb3Q6Omhhc19kaXIoIi5naXQiKSkKZGF0YV9kaXIgPC0gZmlsZS5wYXRoKHJvb3RfZGlyLCAiZGF0YSIpCmFuYWx5c2VzX2RpciA8LSBmaWxlLnBhdGgocm9vdF9kaXIsICJhbmFseXNlcyIpCnJlc3VsdHNfZGlyIDwtIGZpbGUucGF0aChhbmFseXNlc19kaXIsICJkYXRhLXByZS1yZWxlYXNlLXFjIiwgInJlc3VsdHMiKQoKIyBDcmVhdGUgcmVzdWx0cyBmb2xkZXIgaWYgaXQgZG9lc24ndCBleGlzdAppZiAoIWRpci5leGlzdHMocmVzdWx0c19kaXIpKSB7CiAgZGlyLmNyZWF0ZShyZXN1bHRzX2RpcikKfQpgYGAKCiMjIyMgRnVuY3Rpb25zCgotIE91dHB1dCB0YWJsZSBmdW5jdGlvbgpgYGB7cn0KbWlzc2luZ19iaW9zcGVjaW1lbl90YWJsZSA8LSBmdW5jdGlvbihoaXN0X2RmLCBtaXNzaW5nX2lkcywgb3V0cHV0X2ZpbGUpIHsKICBtaXNzaW5nX2lkc19kZiA8LSBoaXN0X2RmICU+JSAKICAgIGRwbHlyOjpmaWx0ZXIoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCAlaW4lIG1pc3NpbmdfaWRzKSAlPiUgCiAgICBkcGx5cjo6c2VsZWN0KEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQsIAogICAgICAgICAgICAgICAgICBLaWRzX0ZpcnN0X1BhcnRpY2lwYW50X0lELAogICAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfc3RyYXRlZ3ksCiAgICAgICAgICAgICAgICAgIHNhbXBsZV90eXBlLAogICAgICAgICAgICAgICAgICBSTkFfbGlicmFyeSwgCiAgICAgICAgICAgICAgICAgIGNvaG9ydCkKICByZWFkcjo6d3JpdGVfdHN2KG1pc3NpbmdfaWRzX2RmLCBmaWxlLnBhdGgocmVzdWx0c19kaXIsIG91dHB1dF9maWxlKSkKICByZXR1cm4obWlzc2luZ19pZHNfZGYpCn0KCmBgYAoKIyMjIyBIaXN0b2xvZ2llcyBmaWxlCgotIExvYWQgaGlzdG9sb2dpZXMgZmlsZQpgYGB7cn0KIyByZWFkIGZpbGUKaGlzdF9kZiA8LSByZWFkcjo6cmVhZF90c3YoZmlsZS5wYXRoKGRhdGFfZGlyLCAiaGlzdG9sb2dpZXMtYmFzZS50c3YiKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1ZXNzX21heCA9IDEwMDAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2d1ZXNzKCkpKQpgYGAKCgoKIyMjIyBDaGVjayBPcGVuUGVkQ2FuIFJOQS1TZXEgYmlvc3BlY2ltZW4gSURzCgotIEV4cGVjdGVkIGNvdW50cyBtYXRyaXggKGdlbmUtY291bnRzLXJzZW0tZXhwZWN0ZWRfY291bnQtY29sbGFwc2VkLnJkcykKYGBge3J9CiMgZ2V0IE9wZW5QZWRDYW4gcm5hc2VxIGJpb3NwZWNpbWVuIGlkcwpoaXN0X2lkcyA8LSBoaXN0X2RmICU+JQogIGZpbHRlcihleHBlcmltZW50YWxfc3RyYXRlZ3kgPT0gIlJOQS1TZXEiLCBjb2hvcnQgIT0gIlRDR0EiKSAlPiUKICBkcGx5cjo6cHVsbChLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEKQoKIyBjaGVjayB0aGF0IGFsbCBPcGVuUGVkQ2FuIFJOQS1TZXEgYmlvc3BlY2ltZW4gSURzIGFyZSBpbiB0aGUgZXhwZWN0ZWQgY291bnQgZXhwcmVzc2lvbiBtYXRyaXgKYmlvc3BlY2ltZW5faWRzIDwtIHJlYWRyOjpyZWFkX3JkcyhmaWxlLnBhdGgoZGF0YV9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZS1jb3VudHMtcnNlbS1leHBlY3RlZF9jb3VudC1jb2xsYXBzZWQucmRzIikpICU+JQogIGNvbG5hbWVzKCkKbWlzc2luZ19pZHMgPC0gc2V0ZGlmZihoaXN0X2lkcywgYmlvc3BlY2ltZW5faWRzKQptaXNzaW5nX2hpc3RfaWRzIDwtIHNldGRpZmYoYmlvc3BlY2ltZW5faWRzLCBoaXN0X2lkcykKaWYgKGxlbmd0aChtaXNzaW5nX2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImhpc3RvbG9naWVzLXNhbXBsZXMtbWlzc2luZy1pbi1nZW5lLWNvdW50cy1yc2VtLWV4cGVjdGVkX2NvdW50LWNvbGxhcHNlZC50c3YiCiAgbWlzc2luZ19pZHNfZGYgPC0gbWlzc2luZ19iaW9zcGVjaW1lbl90YWJsZShoaXN0X2RmLCBtaXNzaW5nX2lkcywgb3V0cHV0X2ZpbGUpCiAgbWlzc2luZ19pZHNfZGYKfQpwcmludChwYXN0ZSgiUk5BLVNlcSBiaW9zcGVjaW1lbiBpbiBoaXN0b2xnaWVzIG1pc3NpbmcgaW4gZ2VuZS1jb3VudHMtcnNlbS1leHBlY3RlZF9jb3VudC1jb2xsYXBzZWQucmRzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaWRzKSkpCmlmIChsZW5ndGgobWlzc2luZ19oaXN0X2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImdlbmUtY291bnRzLXJzZW0tZXhwZWN0ZWRfY291bnQtY29sbGFwc2VkLXNhbXBsZXMtbWlzc2luZy1pbi1oaXN0b2xvZ2llcy50c3YiCiAgbWlzc2luZ19oaXN0X2lkc19kZiA8LSB0aWJibGU6OnRpYmJsZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gbWlzc2luZ19oaXN0X2lkcykKICBtaXNzaW5nX2hpc3RfaWRzX2RmICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYKfQpwcmludChwYXN0ZSgiUk5BLVNlcSBiaW9zcGVjaW1lbiBpbiBnZW5lLWNvdW50cy1yc2VtLWV4cGVjdGVkX2NvdW50LWNvbGxhcHNlZC5yZHMgbWlzc2luZyBpbiBoaXN0b2xnaWVzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpKSkKYGBgCgotIFRQTSBtYXRyaXggKGdlbmUtZXhwcmVzc2lvbi1yc2VtLXRwbS1jb2xsYXBzZWQucmRzKQpgYGB7cn0KIyBjaGVjayB0aGF0IGFsbCBPcGVuUGVkQ2FuIFJOQS1TZXEgYmlvc3BlY2ltZW4gSURzIGFyZSBpbiB0aGUgdHBtIGV4cHJlc3Npb24gbWF0cml4CmJpb3NwZWNpbWVuX2lkcyA8LSByZWFkcjo6cmVhZF9yZHMoZmlsZS5wYXRoKGRhdGFfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmUtZXhwcmVzc2lvbi1yc2VtLXRwbS1jb2xsYXBzZWQucmRzIikpICU+JQogIGNvbG5hbWVzKCkKbWlzc2luZ19pZHMgPC0gc2V0ZGlmZihoaXN0X2lkcywgYmlvc3BlY2ltZW5faWRzKQptaXNzaW5nX2hpc3RfaWRzIDwtIHNldGRpZmYoYmlvc3BlY2ltZW5faWRzLCBoaXN0X2lkcykKaWYgKGxlbmd0aChtaXNzaW5nX2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImhpc3RvbG9naWVzLXNhbXBsZXMtbWlzc2luZy1pbi1nZW5lLWV4cHJlc3Npb24tcnNlbS10cG0tY29sbGFwc2VkLnRzdiIKICBtaXNzaW5nX2lkc19kZiA8LSBtaXNzaW5nX2Jpb3NwZWNpbWVuX3RhYmxlKGhpc3RfZGYsIG1pc3NpbmdfaWRzLCBvdXRwdXRfZmlsZSkKICBtaXNzaW5nX2lkc19kZgp9CnByaW50KHBhc3RlKCJSTkEtU2VxIGJpb3NwZWNpbWVuIGluIGhpc3RvbGdpZXMgbWlzc2luZyBpbiBnZW5lLWV4cHJlc3Npb24tcnNlbS10cG0tY29sbGFwc2VkLnJkcyA9ICIsIGxlbmd0aChtaXNzaW5nX2lkcykpKQppZiAobGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJnZW5lLWV4cHJlc3Npb24tcnNlbS10cG0tY29sbGFwc2VkLXNhbXBsZXMtbWlzc2luZy1pbi1oaXN0b2xvZ2llcy50c3YiCiAgbWlzc2luZ19oaXN0X2lkc19kZiA8LSB0aWJibGU6OnRpYmJsZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gbWlzc2luZ19oaXN0X2lkcykKICBtaXNzaW5nX2hpc3RfaWRzX2RmICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYKfQpwcmludChwYXN0ZSgiUk5BLVNlcSBiaW9zcGVjaW1lbiBpbiBnZW5lLWV4cHJlc3Npb24tcnNlbS10cG0tY29sbGFwc2VkLnJkcyBtaXNzaW5nIGluIGhpc3RvbGdpZXMgPSAiLCBsZW5ndGgobWlzc2luZ19oaXN0X2lkcykpKQpgYGAKCi0gSXNvZm9ybSBUUE0gbWF0cml4IChybmEtaXNvZm9ybS1leHByZXNzaW9uLXJzZW0tdHBtLnJkcykKYGBge3J9CiMgZXhjbHVkZSBHVEV4IGJpb3NwZWNpbWVuIHdoZW4gY2hlY2tpbmcgaXNvZm9ybSBtYXRyaXgKaXNvZm9ybV9oaXN0X2lkcyA8LSAgaGlzdF9kZiAlPiUKICBmaWx0ZXIoZXhwZXJpbWVudGFsX3N0cmF0ZWd5ID09ICJSTkEtU2VxIiwgIWNvaG9ydCAlaW4lIGMoIlRDR0EiLCJHVEV4IikpICU+JQogIGRwbHlyOjpwdWxsKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQpCgojIGNoZWNrIHRoYXQgYWxsIE9wZW5QZWRDYW4gUk5BLVNlcSBiaW9zcGVjaW1lbiBJRHMgYXJlIGluIHRoZSB0cG0gZXhwcmVzc2lvbiBtYXRyaXgKYmlvc3BlY2ltZW5faWRzIDwtIHJlYWRyOjpyZWFkX3JkcyhmaWxlLnBhdGgoZGF0YV9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm5hLWlzb2Zvcm0tZXhwcmVzc2lvbi1yc2VtLXRwbS5yZHMiKSkgJT4lCiAgZHBseXI6OnNlbGVjdCgtYygidHJhbnNjcmlwdF9pZCIsICJnZW5lX3N5bWJvbCIpKSAlPiUKICBjb2xuYW1lcygpCm1pc3NpbmdfaWRzIDwtIHNldGRpZmYoaXNvZm9ybV9oaXN0X2lkcywgYmlvc3BlY2ltZW5faWRzKQptaXNzaW5nX2hpc3RfaWRzIDwtIHNldGRpZmYoYmlvc3BlY2ltZW5faWRzLCBpc29mb3JtX2hpc3RfaWRzKQppZiAobGVuZ3RoKG1pc3NpbmdfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAiaGlzdG9sb2dpZXMtc2FtcGxlcy1taXNzaW5nLWluLXJuYS1pc29mb3JtLWV4cHJlc3Npb24tcnNlbS10cG0udHN2IgogIG1pc3NpbmdfaWRzX2RmIDwtIG1pc3NpbmdfYmlvc3BlY2ltZW5fdGFibGUoaGlzdF9kZiwgbWlzc2luZ19pZHMsIG91dHB1dF9maWxlKQogIG1pc3NpbmdfaWRzX2RmCn0KcHJpbnQocGFzdGUoIlJOQS1TZXEgYmlvc3BlY2ltZW4gaW4gaGlzdG9sZ2llcyBtaXNzaW5nIGluIHJuYS1pc29mb3JtLWV4cHJlc3Npb24tcnNlbS10cG0ucmRzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaWRzKSkpCmlmIChsZW5ndGgobWlzc2luZ19oaXN0X2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gInJuYS1pc29mb3JtLWV4cHJlc3Npb24tcnNlbS10cG0tc2FtcGxlcy1taXNzaW5nLWluLWhpc3RvbG9naWVzLnRzdiIKICBtaXNzaW5nX2hpc3RfaWRzX2RmIDwtIHRpYmJsZTo6dGliYmxlKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQgPSBtaXNzaW5nX2hpc3RfaWRzKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYgJT4lIHJlYWRyOjp3cml0ZV90c3YoZmlsZS5wYXRoKHJlc3VsdHNfZGlyLCBvdXRwdXRfZmlsZSkpCiAgbWlzc2luZ19oaXN0X2lkc19kZgp9CnByaW50KHBhc3RlKCJSTkEtU2VxIGJpb3NwZWNpbWVuIGluIHJuYS1pc29mb3JtLWV4cHJlc3Npb24tcnNlbS10cG0ucmRzIG1pc3NpbmcgaW4gaGlzdG9sZ2llcyA9ICIsIGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSkpCmBgYAoKCiMjIyMgQ2hlY2sgVENHQSBSTkEtU2VxIGJpb3NwZWNpbWVuIElEcwoKPCEtLSAtIEV4cGVjdGVkIGNvdW50cyBtYXRyaXggKHRjZ2EtZ2VuZS1jb3VudHMtcnNlbS1leHBlY3RlZF9jb3VudC1jb2xsYXBzZWQucmRzKSAtLT4KPCEtLSBgYGB7cn0gLS0+CjwhLS0gIyBjaGVjayB0aGF0IGFsbCBUQ0dBIFJOQS1TZXEgYmlvc3BlY2ltZW4gSURzIGFyZSBpbiB0aGUgZXhwZWN0ZWQgY291bnQgZXhwcmVzc2lvbiBtYXRyaXggLS0+CjwhLS0gYmlvc3BlY2ltZW5faWRzIDwtIHJlYWRyOjpyZWFkX3JkcyhmaWxlLnBhdGgoZGF0YV9kaXIsIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGNnYS1nZW5lLWNvdW50cy1yc2VtLWV4cGVjdGVkX2NvdW50LWNvbGxhcHNlZC5yZHMiKSAtLT4KPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICU+JSAtLT4KPCEtLSAgIGNvbG5hbWVzKCkgLS0+CjwhLS0gbWlzc2luZ19pZHMgPC0gc2V0ZGlmZihoaXN0X2lkcywgYmlvc3BlY2ltZW5faWRzKSAtLT4KPCEtLSBtaXNzaW5nX2hpc3RfaWRzIDwtIHNldGRpZmYoYmlvc3BlY2ltZW5faWRzLCBoaXN0X2lkcykgLS0+CjwhLS0gaWYgKGxlbmd0aChtaXNzaW5nX2lkcykgPiAwKSB7IC0tPgo8IS0tICAgb3V0cHV0X2ZpbGUgPC0gImhpc3RvbG9naWVzLXNhbXBsZXMtbWlzc2luZy1pbi10Y2dhLWdlbmUtY291bnRzLXJzZW0tZXhwZWN0ZWRfY291bnQtY29sbGFwc2VkLnRzdiIgLS0+CjwhLS0gICBtaXNzaW5nX2lkc19kZiA8LSBtaXNzaW5nX2Jpb3NwZWNpbWVuX3RhYmxlKGhpc3RfZGYsIG1pc3NpbmdfaWRzLCBvdXRwdXRfZmlsZSkgLS0+CjwhLS0gICBtaXNzaW5nX2lkc19kZiAtLT4KPCEtLSB9IC0tPgo8IS0tIHByaW50KHBhc3RlKCJSTkEtU2VxIGJpb3NwZWNpbWVuIGluIGhpc3RvbGdpZXMgbWlzc2luZyBpbiB0Y2dhLWdlbmUtY291bnRzLXJzZW0tZXhwZWN0ZWRfY291bnQtY29sbGFwc2VkLnJkcyA9ICIsIGxlbmd0aChtaXNzaW5nX2lkcykpKSAtLT4KPCEtLSBpZiAobGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpID4gMCkgeyAtLT4KPCEtLSAgIG91dHB1dF9maWxlIDwtICJ0Y2dhLWdlbmUtY291bnRzLXJzZW0tZXhwZWN0ZWRfY291bnQtY29sbGFwc2VkLXNhbXBsZXMtbWlzc2luZy1pbi1oaXN0b2xvZ2llcy50c3YiIC0tPgo8IS0tICAgbWlzc2luZ19oaXN0X2lkc19kZiA8LSB0aWJibGU6OnRpYmJsZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gbWlzc2luZ19oaXN0X2lkcykgLS0+CjwhLS0gICBtaXNzaW5nX2hpc3RfaWRzX2RmICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKSAtLT4KPCEtLSAgIG1pc3NpbmdfaGlzdF9pZHNfZGYgLS0+CjwhLS0gfSAtLT4KPCEtLSBwcmludChwYXN0ZSgiUk5BLVNlcSBiaW9zcGVjaW1lbiBpbiB0Y2dhLWdlbmUtY291bnRzLXJzZW0tZXhwZWN0ZWRfY291bnQtY29sbGFwc2VkLnJkcyBtaXNzaW5nIGluIGhpc3RvbGdpZXMgPSAiLCBsZW5ndGgobWlzc2luZ19oaXN0X2lkcykpKSAtLT4KPCEtLSBgYGAgLS0+CgotIFRQTSBtYXRyaXggKHRjZ2EtZ2VuZS1leHByZXNzaW9uLXJzZW0tdHBtLWNvbGxhcHNlZC5yZHMpCmBgYHtyfQojIGdldCB0Y2dhIHJuYXNlcSBiaW9zcGVjaW1lbiBpZHMKaGlzdF9pZHMgPC0gaGlzdF9kZiAlPiUKICBmaWx0ZXIoZXhwZXJpbWVudGFsX3N0cmF0ZWd5ID09ICJSTkEtU2VxIiwgY29ob3J0ID09ICJUQ0dBIikgJT4lCiAgZHBseXI6OnB1bGwoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCkKCiMgY2hlY2sgdGhhdCBhbGwgVENHQSBSTkEtU2VxIGJpb3NwZWNpbWVuIElEcyBhcmUgaW4gdGhlIHRwbSBleHByZXNzaW9uIG1hdHJpeApiaW9zcGVjaW1lbl9pZHMgPC0gcmVhZHI6OnJlYWRfcmRzKGZpbGUucGF0aChkYXRhX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0Y2dhLWdlbmUtZXhwcmVzc2lvbi1yc2VtLXRwbS1jb2xsYXBzZWQucmRzIikpICU+JQogIGNvbG5hbWVzKCkKbWlzc2luZ19pZHMgPC0gc2V0ZGlmZihoaXN0X2lkcywgYmlvc3BlY2ltZW5faWRzKQptaXNzaW5nX2hpc3RfaWRzIDwtIHNldGRpZmYoYmlvc3BlY2ltZW5faWRzLCBoaXN0X2lkcykKaWYgKGxlbmd0aChtaXNzaW5nX2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImhpc3RvbG9naWVzLXNhbXBsZXMtbWlzc2luZy1pbi10Y2dhLWdlbmUtZXhwcmVzc2lvbi1yc2VtLXRwbS1jb2xsYXBzZWQudHN2IgogIG1pc3NpbmdfaWRzX2RmIDwtIG1pc3NpbmdfYmlvc3BlY2ltZW5fdGFibGUoaGlzdF9kZiwgbWlzc2luZ19pZHMsIG91dHB1dF9maWxlKQogIG1pc3NpbmdfaWRzX2RmCn0KcHJpbnQocGFzdGUoIlJOQS1TZXEgYmlvc3BlY2ltZW4gaW4gaGlzdG9sZ2llcyBtaXNzaW5nIGluIHRjZ2EtZ2VuZS1leHByZXNzaW9uLXJzZW0tdHBtLWNvbGxhcHNlZC5yZHMgPSAiLCBsZW5ndGgobWlzc2luZ19pZHMpKSkKaWYgKGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAidGNnYS1nZW5lLWV4cHJlc3Npb24tcnNlbS10cG0tY29sbGFwc2VkLXNhbXBsZXMtbWlzc2luZy1pbi1oaXN0b2xvZ2llcy50c3YiCiAgbWlzc2luZ19oaXN0X2lkc19kZiA8LSB0aWJibGU6OnRpYmJsZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gbWlzc2luZ19oaXN0X2lkcykKICBtaXNzaW5nX2hpc3RfaWRzX2RmICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYKfQpwcmludChwYXN0ZSgiUk5BLVNlcSBiaW9zcGVjaW1lbiBpbiB0Y2dhLWdlbmUtZXhwcmVzc2lvbi1yc2VtLXRwbS1jb2xsYXBzZWQucmRzIG1pc3NpbmcgaW4gaGlzdG9sZ2llcyA9ICIsIGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSkpCmBgYAoKIyMjIyBDaGVjayBnZW5lIHN5bWJvbHMgaW4gZ2VuZSBleHByZXNzaW9uIG1hdHJpY2VzCgotIFJOQS1TZXEgZXhwcmVzc2lvbiBtYXRyaWNlcwpgYGB7cn0KIyBPUEMgY291bnRzIG1hdHJpeApvcGNfY291bnRzIDwtCiAgdGliYmxlOjp0aWJibGUoT1BDX0NPVU5UUyA9CiAgICByZWFkcjo6cmVhZF9yZHMoZmlsZS5wYXRoKGRhdGFfZGlyLCAiZ2VuZS1jb3VudHMtcnNlbS1leHBlY3RlZF9jb3VudC1jb2xsYXBzZWQucmRzIikpICU+JQogICAgICByb3duYW1lcygpICU+JSB1bmlxdWUoKSkgJT4lCiAgZHBseXI6Om11dGF0ZShnZW5lX3N5bWJvbCA9IE9QQ19DT1VOVFMpCgojIE9QQyB0cG0gbWF0cml4Cm9wY190cG0gPC0KICB0aWJibGU6OnRpYmJsZShPUENfVFBNID0KICAgIHJlYWRyOjpyZWFkX3JkcyhmaWxlLnBhdGgoZGF0YV9kaXIsICJnZW5lLWV4cHJlc3Npb24tcnNlbS10cG0tY29sbGFwc2VkLnJkcyIpKSAlPiUKICAgICAgcm93bmFtZXMoKSAlPiUgdW5pcXVlKCkpICU+JQogIGRwbHlyOjptdXRhdGUoZ2VuZV9zeW1ib2wgPSBPUENfVFBNKQoKIyAjIFRDR0EgY291bnRzIG1hdHJpeAojIHRjZ2EtY291bnRzIDwtCiMgICB0aWJibGU6OnRpYmJsZShUQ0dBX0NPVU5UUyA9CiMgICAgIHJlYWRyOjpyZWFkX3JkcyhmaWxlLnBhdGgoZGF0YV9kaXIsICJ0Y2dhLWdlbmUtY291bnRzLXJzZW0tZXhwZWN0ZWRfY291bnQtY29sbGFwc2VkLnJkcyIpKSAlPiUKIyAgICAgICByb3duYW1lcygpICU+JSB1bmlxdWUoKSkgJT4lCiMgICBkcGx5cjo6bXV0YXRlKGdlbmVfc3ltYm9sID0gVENHQV9DT1VOVFMpCgojIFRDR0EgdHBtIG1hdHJpeAp0Y2dhX3RwbSA8LQogIHRpYmJsZTo6dGliYmxlKFRDR0FfVFBNID0KICAgIHJlYWRyOjpyZWFkX3JkcyhmaWxlLnBhdGgoZGF0YV9kaXIsICJ0Y2dhLWdlbmUtZXhwcmVzc2lvbi1yc2VtLXRwbS1jb2xsYXBzZWQucmRzIikpICU+JQogICAgICByb3duYW1lcygpICU+JSB1bmlxdWUoKSkgJT4lCiAgZHBseXI6Om11dGF0ZShnZW5lX3N5bWJvbCA9IFRDR0FfVFBNKQoKIyBtZXJnZSBhbmQgbGlzdCBkaWZmZXJlbmNlcwpnZW5lX3N5bWJvbF9kaWZmcyA8LSBvcGNfY291bnRzICU+JQogIGRwbHlyOjpmdWxsX2pvaW4ob3BjX3RwbSwgYnkgPSAiZ2VuZV9zeW1ib2wiKSAlPiUKICBkcGx5cjo6ZnVsbF9qb2luKHRjZ2FfdHBtLCBieSA9ICJnZW5lX3N5bWJvbCIpICU+JQogIGRwbHlyOjpzZWxlY3QoLWdlbmVfc3ltYm9sKSAlPiUKICBkcGx5cjo6ZmlsdGVyKGlzLm5hKE9QQ19DT1VOVFMpIHwgaXMubmEoT1BDX1RQTSkgfCBpcy5uYShUQ0dBX1RQTSkpICU+JQogIGRwbHlyOjpkaXN0aW5jdCgpCgojIGNoZWNrIGFueSBkaWZmZXJlbmNlcyBpbiBnZW5lIHN5bWJvbHMgYW1vbmcgZ2VuZSBtYXRyaWNlcwppZiAobGVuZ3RoKHJvd25hbWVzKGdlbmVfc3ltYm9sX2RpZmZzKSkgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImdlbmVzX25vdF9pbl9hbGxfZ2VuZV9leHByZXNzaW9uX21hdHJpY2VzLnRzdiIKICBnZW5lX3N5bWJvbF9kaWZmcyAlPiUgcmVhZHI6OndyaXRlX3RzdihmaWxlLnBhdGgocmVzdWx0c19kaXIsIG91dHB1dF9maWxlKSkKICBnZW5lX3N5bWJvbF9kaWZmcwp9CnByaW50KHBhc3RlKCJHZW5lcyBub3QgbWF0Y2hpbmcgYWxsIGV4cHJlc3Npb24gbWF0cmljZXMgPSIsIGxlbmd0aChyb3duYW1lcyhnZW5lX3N5bWJvbF9kaWZmcykpKSkKYGBgCgoKIyMjIyBDaGVjayBtZXRoeWxhdGlvbiBtYXRyaWNlcyBiaW9zcGVjaW1lbiBJRHMKCi0gQmV0YS12YWx1ZXMgbWF0cml4IChtZXRoeWwtYmV0YS12YWx1ZXMucmRzKQpgYGB7cn0KIyBnZXQgYmV0YS12YWx1ZXMgbWV0aHlsYXRpb24gYmlvc3BlY2ltZW4gaWRzCmhpc3RfaWRzIDwtIGhpc3RfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihleHBlcmltZW50YWxfc3RyYXRlZ3kgPT0gIk1ldGh5bGF0aW9uIikgJT4lCiAgZHBseXI6OnB1bGwoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCkKCiMgY2hlY2sgdGhhdCBhbGwgbWV0aHlsYXRpb24gYmlvc3BlY2ltZW4gSURzIGFyZSBpbiB0aGUgYmV0YS12YWx1ZXMgbWV0aHlsYXRpb24gbWF0cml4CmJpb3NwZWNpbWVuX2lkcyA8LSByZWFkcjo6cmVhZF9yZHMoZmlsZS5wYXRoKGRhdGFfZGlyLCAibWV0aHlsLWJldGEtdmFsdWVzLnJkcyIpKSAlPiUKICBkcGx5cjo6c2VsZWN0KC1Qcm9iZV9JRCkgJT4lCiAgY29sbmFtZXMoKQptaXNzaW5nX2lkcyA8LSBzZXRkaWZmKGhpc3RfaWRzLCBiaW9zcGVjaW1lbl9pZHMpCm1pc3NpbmdfaGlzdF9pZHMgPC0gc2V0ZGlmZihiaW9zcGVjaW1lbl9pZHMsIGhpc3RfaWRzKQppZiAobGVuZ3RoKG1pc3NpbmdfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAiaGlzdG9sb2dpZXMtc2FtcGxlcy1taXNzaW5nLWluLW1ldGh5bC1iZXRhLXZhbHVlcy50c3YiCiAgbWlzc2luZ19pZHNfZGYgPC0gbWlzc2luZ19iaW9zcGVjaW1lbl90YWJsZShoaXN0X2RmLCBtaXNzaW5nX2lkcywgb3V0cHV0X2ZpbGUpCiAgbWlzc2luZ19pZHNfZGYKfQpwcmludChwYXN0ZSgiTWV0aHlsYXRpb24gYmlvc3BlY2ltZW4gaW4gaGlzdG9sZ2llcyBtaXNzaW5nIGluIG1ldGh5bC1iZXRhLXZhbHVlcy5yZHMgPSAiLCBsZW5ndGgobWlzc2luZ19pZHMpKSkKaWYgKGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAibWV0aHlsLWJldGEtdmFsdWVzLXNhbXBsZXMtbWlzc2luZy1pbi1oaXN0b2xvZ2llcy50c3YiCiAgbWlzc2luZ19oaXN0X2lkc19kZiA8LSB0aWJibGU6OnRpYmJsZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gbWlzc2luZ19oaXN0X2lkcykKICBtaXNzaW5nX2hpc3RfaWRzX2RmICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYKfQpwcmludChwYXN0ZSgiTWV0aHlsYXRpb24gYmlvc3BlY2ltZW4gaW4gbWV0aHlsLWJldGEtdmFsdWVzLnJkcyBtaXNzaW5nIGluIGhpc3RvbGdpZXMgPSAiLCBsZW5ndGgobWlzc2luZ19oaXN0X2lkcykpKQpgYGAKCi0gTS12YWx1ZXMgbWF0cml4IChtZXRoeWwtbS12YWx1ZXMucmRzKQpgYGB7cn0KIyBjaGVjayB0aGF0IGFsbCBtZXRoeWxhdGlvbiBiaW9zcGVjaW1lbiBJRHMgYXJlIGluIHRoZSBtLXZhbHVlcyBtZXRoeWxhdGlvbiBtYXRyaXgKYmlvc3BlY2ltZW5faWRzIDwtIHJlYWRyOjpyZWFkX3JkcyhmaWxlLnBhdGgoZGF0YV9kaXIsICJtZXRoeWwtbS12YWx1ZXMucmRzIikpICU+JQogIGRwbHlyOjpzZWxlY3QoLVByb2JlX0lEKSAlPiUKICBjb2xuYW1lcygpCm1pc3NpbmdfaWRzIDwtIHNldGRpZmYoaGlzdF9pZHMsIGJpb3NwZWNpbWVuX2lkcykKbWlzc2luZ19oaXN0X2lkcyA8LSBzZXRkaWZmKGJpb3NwZWNpbWVuX2lkcywgaGlzdF9pZHMpCmlmIChsZW5ndGgobWlzc2luZ19pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJoaXN0b2xvZ2llcy1zYW1wbGVzLW1pc3NpbmctaW4tbWV0aHlsLW0tdmFsdWVzLnRzdiIKICBtaXNzaW5nX2lkc19kZiA8LSBtaXNzaW5nX2Jpb3NwZWNpbWVuX3RhYmxlKGhpc3RfZGYsIG1pc3NpbmdfaWRzLCBvdXRwdXRfZmlsZSkKICBtaXNzaW5nX2lkc19kZgp9CnByaW50KHBhc3RlKCJNZXRoeWxhdGlvbiBiaW9zcGVjaW1lbiBpbiBoaXN0b2xnaWVzIG1pc3NpbmcgaW4gbWV0aHlsLW0tdmFsdWVzLnJkcyA9ICIsIGxlbmd0aChtaXNzaW5nX2lkcykpKQppZiAobGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJtZXRoeWwtbS12YWx1ZXMtc2FtcGxlcy1taXNzaW5nLWluLWhpc3RvbG9naWVzLnRzdiIKICBtaXNzaW5nX2hpc3RfaWRzX2RmIDwtIHRpYmJsZTo6dGliYmxlKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQgPSBtaXNzaW5nX2hpc3RfaWRzKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYgJT4lIHJlYWRyOjp3cml0ZV90c3YoZmlsZS5wYXRoKHJlc3VsdHNfZGlyLCBvdXRwdXRfZmlsZSkpCiAgbWlzc2luZ19oaXN0X2lkc19kZgp9CnByaW50KHBhc3RlKCJNZXRoeWxhdGlvbiBiaW9zcGVjaW1lbiBpbiBtZXRoeWwtbS12YWx1ZXMucmRzIG1pc3NpbmcgaW4gaGlzdG9sZ2llcyA9ICIsIGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSkpCmBgYAoKLSBDTi12YWx1ZXMgbWF0cml4IChtZXRoeWwtbS12YWx1ZXMucmRzKQpgYGB7cn0KIyBjaGVjayB0aGF0IGFsbCBtZXRoeWxhdGlvbiBiaW9zcGVjaW1lbiBJRHMgYXJlIGluIHRoZSBtLXZhbHVlcyBtZXRoeWxhdGlvbiBtYXRyaXgKYmlvc3BlY2ltZW5faWRzIDwtIHJlYWRyOjpyZWFkX3JkcyhmaWxlLnBhdGgoZGF0YV9kaXIsICJtZXRoeWwtY24tdmFsdWVzLnJkcyIpKSAlPiUKICBkcGx5cjo6c2VsZWN0KC1Qcm9iZV9JRCkgJT4lCiAgY29sbmFtZXMoKQptaXNzaW5nX2lkcyA8LSBzZXRkaWZmKGhpc3RfaWRzLCBiaW9zcGVjaW1lbl9pZHMpCm1pc3NpbmdfaGlzdF9pZHMgPC0gc2V0ZGlmZihiaW9zcGVjaW1lbl9pZHMsIGhpc3RfaWRzKQppZiAobGVuZ3RoKG1pc3NpbmdfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAiaGlzdG9sb2dpZXMtc2FtcGxlcy1taXNzaW5nLWluLW1ldGh5bC1jbi12YWx1ZXMudHN2IgogIG1pc3NpbmdfaWRzX2RmIDwtIG1pc3NpbmdfYmlvc3BlY2ltZW5fdGFibGUoaGlzdF9kZiwgbWlzc2luZ19pZHMsIG91dHB1dF9maWxlKQogIG1pc3NpbmdfaWRzX2RmCn0KcHJpbnQocGFzdGUoIk1ldGh5bGF0aW9uIGJpb3NwZWNpbWVuIGluIGhpc3RvbGdpZXMgbWlzc2luZyBpbiBtZXRoeWwtY24tdmFsdWVzLnJkcyA9ICIsIGxlbmd0aChtaXNzaW5nX2lkcykpKQppZiAobGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJtZXRoeWwtY24tdmFsdWVzLXNhbXBsZXMtbWlzc2luZy1pbi1oaXN0b2xvZ2llcy50c3YiCiAgbWlzc2luZ19oaXN0X2lkc19kZiA8LSB0aWJibGU6OnRpYmJsZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gbWlzc2luZ19oaXN0X2lkcykKICBtaXNzaW5nX2hpc3RfaWRzX2RmICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYKfQpwcmludChwYXN0ZSgiTWV0aHlsYXRpb24gYmlvc3BlY2ltZW4gaW4gbWV0aHlsLWNuLXZhbHVlcy5yZHMgbWlzc2luZyBpbiBoaXN0b2xnaWVzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpKSkKYGBgCgojIyMjIENoZWNrIG1ldGh5bGF0aW9uIG1hdHJpY2VzIHByb2JlIElEcwoKLSBNZXRoeWxhdGlvbiBtYXRyaWNlcwpgYGB7cn0KIyBiZXRhLXZhbHVlcyBtYXRyaXgKYmV0YV92YWx1ZXMgPC0KICB0aWJibGU6OnRpYmJsZShiZXRhX3ZhbHVlcyA9CiAgICByZWFkcjo6cmVhZF9yZHMoZmlsZS5wYXRoKGRhdGFfZGlyLCAibWV0aHlsLWJldGEtdmFsdWVzLnJkcyIpKSAlPiUKICAgICAgZHBseXI6OnB1bGwoUHJvYmVfSUQpICU+JSB1bmlxdWUoKSkgJT4lCiAgZHBseXI6Om11dGF0ZShwcm9iZV9pZCA9IGJldGFfdmFsdWVzKQoKIyBtLXZhbHVlcyBtYXRyaXgKbV92YWx1ZXMgPC0KICB0aWJibGU6OnRpYmJsZShtX3ZhbHVlcyA9CiAgICByZWFkcjo6cmVhZF9yZHMoZmlsZS5wYXRoKGRhdGFfZGlyLCAibWV0aHlsLW0tdmFsdWVzLnJkcyIpKSAlPiUKICAgICAgZHBseXI6OnB1bGwoUHJvYmVfSUQpICU+JSB1bmlxdWUoKSkgJT4lCiAgZHBseXI6Om11dGF0ZShwcm9iZV9pZCA9IG1fdmFsdWVzKQoKIyBjbi12YWx1ZXMgbWF0cml4CmNuX3ZhbHVlcyA8LQogIHRpYmJsZTo6dGliYmxlKGNuX3ZhbHVlcyA9CiAgICByZWFkcjo6cmVhZF9yZHMoZmlsZS5wYXRoKGRhdGFfZGlyLCAibWV0aHlsLWNuLXZhbHVlcy5yZHMiKSkgJT4lCiAgICAgIGRwbHlyOjpwdWxsKFByb2JlX0lEKSAlPiUgdW5pcXVlKCkpICU+JQogIGRwbHlyOjptdXRhdGUocHJvYmVfaWQgPSBjbl92YWx1ZXMpCgojIG1lcmdlIGFuZCBsaXN0IGRpZmZlcmVuY2VzCnByb2JlX2lkX2RpZmZzIDwtIGJldGFfdmFsdWVzICU+JQogIGRwbHlyOjpmdWxsX2pvaW4obV92YWx1ZXMsIGJ5ID0gInByb2JlX2lkIikgJT4lCiAgZHBseXI6OmZ1bGxfam9pbihjbl92YWx1ZXMsIGJ5ID0gInByb2JlX2lkIikgJT4lCiAgZHBseXI6OnNlbGVjdCgtcHJvYmVfaWQpICU+JQogIGRwbHlyOjpmaWx0ZXIoaXMubmEoYmV0YV92YWx1ZXMpIHwgaXMubmEobV92YWx1ZXMpIHwgaXMubmEoY25fdmFsdWVzKSkgJT4lCiAgZHBseXI6OmRpc3RpbmN0KCkKCiMgY2hlY2sgYW55IGRpZmZlcmVuY2VzIGluIHByb2JlIElEcyBhbW9uZyBtZXRoeWwgbWF0cmljZXMKaWYgKGxlbmd0aChyb3duYW1lcyhwcm9iZV9pZF9kaWZmcykpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJwcm9iZXNfbm90X2luX2FsbF9tZXRoeWxfbWF0cmljZXMudHN2IgogIGdlbmVfc3ltYm9sX2RpZmZzICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKQogIGdlbmVfc3ltYm9sX2RpZmZzCn0KcHJpbnQocGFzdGUoIlByb2JlcyBub3QgbWF0Y2hpbmcgYWxsIG1ldGh5bGF0aW9uIG1hdHJpY2VzID0iLCBsZW5ndGgocm93bmFtZXMocHJvYmVfaWRfZGlmZnMpKSkpCmBgYAoKIyMjIyBDaGVjayBETkEgU05WLCBDTlYgYW5kIFNWIGJpb3NwZWNpbWVuIElEcwoKLSBDTlZraXQgc2VnIGZpbGUgKGNudi1jbnZraXQuc2VnLmd6KQpgYGB7cn0KIyBjaGVjayB0aGF0IGFsbCBiaW9zcGVjaW1lbiBJRHMgYXJlIGluIHRoZSBmaWxlCmJpb3NwZWNpbWVuX2lkcyA8LSByZWFkcjo6cmVhZF90c3YoZmlsZS5wYXRoKGRhdGFfZGlyLCAiY252LWNudmtpdC5zZWcuZ3oiKSkgJT4lCiAgZHBseXI6OnB1bGwoSUQpICU+JQogIHVuaXF1ZSgpCmhpc3RfaWRzIDwtIGhpc3RfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihleHBlcmltZW50YWxfc3RyYXRlZ3kgJWluJSBjKCJXR1MiLCAiV1hTIiwgIlRhcmdldGVkIFNlcXVlbmNpbmciKSwKICAgICAgICAgICAgICAgIGlzLm5hKFJOQV9saWJyYXJ5KSwKICAgICAgICAgICAgICAgIHNhbXBsZV90eXBlID09ICJUdW1vciIsCiAgICAgICAgICAgICAgICBjb2hvcnQgIT0gIkRHRCIpICU+JQogIGRwbHlyOjpwdWxsKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQpCm1pc3NpbmdfaWRzIDwtIHNldGRpZmYoaGlzdF9pZHMsIGJpb3NwZWNpbWVuX2lkcykKbWlzc2luZ19oaXN0X2lkcyA8LSBzZXRkaWZmKGJpb3NwZWNpbWVuX2lkcywgaGlzdF9pZHMpCmlmIChsZW5ndGgobWlzc2luZ19pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJoaXN0b2xvZ2llcy1zYW1wbGVzLW1pc3NpbmctaW4tY252LWNudmtpdC50c3YiCiAgbWlzc2luZ19pZHNfZGYgPC0gbWlzc2luZ19iaW9zcGVjaW1lbl90YWJsZShoaXN0X2RmLCBtaXNzaW5nX2lkcywgb3V0cHV0X2ZpbGUpCiAgbWlzc2luZ19pZHNfZGYKfQpwcmludChwYXN0ZSgiRE5BIGJpb3NwZWNpbWVuIGluIGhpc3RvbGdpZXMgbWlzc2luZyBpbiBjbnYtY252a2l0LnNlZy5neiA9ICIsIGxlbmd0aChtaXNzaW5nX2lkcykpKQppZiAobGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJjbnYtY252a2l0LnNlZy1zYW1wbGVzLW1pc3NpbmctaW4taGlzdG9sb2dpZXMudHN2IgogIG1pc3NpbmdfaGlzdF9pZHNfZGYgPC0gdGliYmxlOjp0aWJibGUoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCA9IG1pc3NpbmdfaGlzdF9pZHMpCiAgbWlzc2luZ19oaXN0X2lkc19kZiAlPiUgcmVhZHI6OndyaXRlX3RzdihmaWxlLnBhdGgocmVzdWx0c19kaXIsIG91dHB1dF9maWxlKSkKICBtaXNzaW5nX2hpc3RfaWRzX2RmCn0KcHJpbnQocGFzdGUoIkROQSBiaW9zcGVjaW1lbiBpbiBjbnYtY252a2l0LnNlZy5neiBtaXNzaW5nIGluIGhpc3RvbGdpZXMgPSAiLCBsZW5ndGgobWlzc2luZ19oaXN0X2lkcykpKQpgYGAKCi0gQ29udHJvbC1GUkVFQyBmaWxlIChjbnYtY29udHJvbGZyZWVjLnRzdi5neikKYGBge3J9CiMgY2hlY2sgdGhhdCBhbGwgIGJpb3NwZWNpbWVuIElEcyBhcmUgaW4gdGhlIGZpbGUKYmlvc3BlY2ltZW5faWRzIDwtIHJlYWRyOjpyZWFkX3RzdihmaWxlLnBhdGgoZGF0YV9kaXIsICJjbnYtY29udHJvbGZyZWVjLnRzdi5neiIpKSAlPiUKICBkcGx5cjo6cHVsbChLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEKSAlPiUKICB1bmlxdWUoKQpoaXN0X2lkcyA8LSBoaXN0X2RmICU+JQogIGRwbHlyOjpmaWx0ZXIoZXhwZXJpbWVudGFsX3N0cmF0ZWd5ICVpbiUgYygiV0dTIiwgIldYUyIsICJUYXJnZXRlZCBTZXF1ZW5jaW5nIiksCiAgICAgICAgICAgICAgICBpcy5uYShSTkFfbGlicmFyeSksCiAgICAgICAgICAgICAgICBzYW1wbGVfdHlwZSA9PSAiVHVtb3IiLAogICAgICAgICAgICAgICAgY29ob3J0ICE9ICJER0QiLCkgJT4lCiAgZHBseXI6OnB1bGwoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCkKbWlzc2luZ19pZHMgPC0gc2V0ZGlmZihoaXN0X2lkcywgYmlvc3BlY2ltZW5faWRzKQptaXNzaW5nX2hpc3RfaWRzIDwtIHNldGRpZmYoYmlvc3BlY2ltZW5faWRzLCBoaXN0X2lkcykKaWYgKGxlbmd0aChtaXNzaW5nX2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImhpc3RvbG9naWVzLXNhbXBsZXMtbWlzc2luZy1pbi1jbnYtY29udHJvbGZyZWVjLnRzdiIKICBtaXNzaW5nX2lkc19kZiA8LSBtaXNzaW5nX2Jpb3NwZWNpbWVuX3RhYmxlKGhpc3RfZGYsIG1pc3NpbmdfaWRzLCBvdXRwdXRfZmlsZSkKICBtaXNzaW5nX2lkc19kZgp9CnByaW50KHBhc3RlKCJETkEgYmlvc3BlY2ltZW4gaW4gaGlzdG9sZ2llcyBtaXNzaW5nIGluIGNudi1jb250cm9sZnJlZWMudHN2Lmd6ID0gIiwgbGVuZ3RoKG1pc3NpbmdfaWRzKSkpCmlmIChsZW5ndGgobWlzc2luZ19oaXN0X2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImNudi1jb250cm9sZnJlZWMtc2FtcGxlcy1taXNzaW5nLWluLWhpc3RvbG9naWVzLnRzdiIKICBtaXNzaW5nX2hpc3RfaWRzX2RmIDwtIHRpYmJsZTo6dGliYmxlKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQgPSBtaXNzaW5nX2hpc3RfaWRzKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYgJT4lIHJlYWRyOjp3cml0ZV90c3YoZmlsZS5wYXRoKHJlc3VsdHNfZGlyLCBvdXRwdXRfZmlsZSkpCiAgbWlzc2luZ19oaXN0X2lkc19kZgp9CnByaW50KHBhc3RlKCJETkEgYmlvc3BlY2ltZW4gaW4gY252LWNvbnRyb2xmcmVlYy50c3YuZ3ogbWlzc2luZyBpbiBoaXN0b2xnaWVzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpKSkKYGBgCgotIEdBVEsgc2VnIGZpbGUgKGNudi1nYXRrLnNlZy5neikKYGBge3J9CiMgY2hlY2sgdGhhdCBhbGwgYmlvc3BlY2ltZW4gSURzIGFyZSBpbiB0aGUgZmlsZQpiaW9zcGVjaW1lbl9pZHMgPC0gcmVhZHI6OnJlYWRfdHN2KGZpbGUucGF0aChkYXRhX2RpciwgImNudi1nYXRrLnNlZy5neiIpKSAlPiUKICBkcGx5cjo6cHVsbChCU19JRCkgJT4lCiAgdW5pcXVlKCkKaGlzdF9pZHMgPC0gaGlzdF9kZiAlPiUKICBkcGx5cjo6ZmlsdGVyKGV4cGVyaW1lbnRhbF9zdHJhdGVneSAlaW4lIGMoIldHUyIsICJXWFMiLCAiVGFyZ2V0ZWQgU2VxdWVuY2luZyIpLAogICAgICAgICAgICAgICAgaXMubmEoUk5BX2xpYnJhcnkpLAogICAgICAgICAgICAgICAgc2FtcGxlX3R5cGUgPT0gIlR1bW9yIiwKICAgICAgICAgICAgICAgIGNvaG9ydCAhPSAiREdEIiwpICU+JQogIGRwbHlyOjpwdWxsKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQpCm1pc3NpbmdfaWRzIDwtIHNldGRpZmYoaGlzdF9pZHMsIGJpb3NwZWNpbWVuX2lkcykKbWlzc2luZ19oaXN0X2lkcyA8LSBzZXRkaWZmKGJpb3NwZWNpbWVuX2lkcywgaGlzdF9pZHMpCmlmIChsZW5ndGgobWlzc2luZ19pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJoaXN0b2xvZ2llcy1zYW1wbGVzLW1pc3NpbmctaW4tY252LWdhdGsudHN2IgogIG1pc3NpbmdfaWRzX2RmIDwtIG1pc3NpbmdfYmlvc3BlY2ltZW5fdGFibGUoaGlzdF9kZiwgbWlzc2luZ19pZHMsIG91dHB1dF9maWxlKQogIG1pc3NpbmdfaWRzX2RmCn0KcHJpbnQocGFzdGUoIkROQSBiaW9zcGVjaW1lbiBpbiBoaXN0b2xnaWVzIG1pc3NpbmcgaW4gY252LWdhdGsuc2VnLmd6ID0gIiwgbGVuZ3RoKG1pc3NpbmdfaWRzKSkpCmlmIChsZW5ndGgobWlzc2luZ19oaXN0X2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImNudi1nYXRrLXNhbXBsZXMtbWlzc2luZy1pbi1oaXN0b2xvZ2llcy50c3YiCiAgbWlzc2luZ19oaXN0X2lkc19kZiA8LSB0aWJibGU6OnRpYmJsZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gbWlzc2luZ19oaXN0X2lkcykKICBtaXNzaW5nX2hpc3RfaWRzX2RmICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYKfQpwcmludChwYXN0ZSgiRE5BIGJpb3NwZWNpbWVuIGluIGNudi1nYXRrLnNlZy5neiBtaXNzaW5nIGluIGhpc3RvbGdpZXMgPSAiLCBsZW5ndGgobWlzc2luZ19oaXN0X2lkcykpKQpgYGAKCi0gU05WIGNvbnNlbnN1cyBNQUYgZmlsZSAoc252LWNvbnNlbnN1cy1wbHVzLWhvdHNwb3RzLm1hZi50c3YuZ3opCmBgYHtyfQojIGNoZWNrIHRoYXQgYWxsIGJpb3NwZWNpbWVuIElEcyBhcmUgaW4gdGhlIGZpbGUKYmlvc3BlY2ltZW5faWRzIDwtIGRhdGEudGFibGU6OmZyZWFkKGZpbGUucGF0aChkYXRhX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic252LWNvbnNlbnN1cy1wbHVzLWhvdHNwb3RzLm1hZi50c3YuZ3oiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudGFibGUgPSBGQUxTRSkgJT4lCiAgZHBseXI6OnB1bGwoVHVtb3JfU2FtcGxlX0JhcmNvZGUpICU+JQogIHVuaXF1ZSgpCmhpc3RfaWRzIDwtIGhpc3RfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihleHBlcmltZW50YWxfc3RyYXRlZ3kgJWluJSBjKCJXR1MiLCAiV1hTIiwgIlRhcmdldGVkIFNlcXVlbmNpbmciKSwKICAgICAgICAgICAgICAgIGlzLm5hKFJOQV9saWJyYXJ5KSwKICAgICAgICAgICAgICAgIHNhbXBsZV90eXBlID09ICJUdW1vciIsCiAgICAgICAgICAgICAgICBjb2hvcnQgIT0gIkRHRCIsKSAlPiUKICBkcGx5cjo6cHVsbChLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEKQptaXNzaW5nX2lkcyA8LSBzZXRkaWZmKGhpc3RfaWRzLCBiaW9zcGVjaW1lbl9pZHMpCm1pc3NpbmdfaGlzdF9pZHMgPC0gc2V0ZGlmZihiaW9zcGVjaW1lbl9pZHMsIGhpc3RfaWRzKQppZiAobGVuZ3RoKG1pc3NpbmdfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAiaGlzdG9sb2dpZXMtc2FtcGxlcy1taXNzaW5nLWluLXNudi1jb25zZW5zdXMtcGx1cy1ob3RzcG90cy50c3YiCiAgbWlzc2luZ19pZHNfZGYgPC0gbWlzc2luZ19iaW9zcGVjaW1lbl90YWJsZShoaXN0X2RmLCBtaXNzaW5nX2lkcywgb3V0cHV0X2ZpbGUpCiAgbWlzc2luZ19pZHNfZGYKfQpwcmludChwYXN0ZSgiRE5BIGJpb3NwZWNpbWVuIGluIGhpc3RvbGdpZXMgbWlzc2luZyBpbiBzbnYtY29uc2Vuc3VzLXBsdXMtaG90c3BvdHMubWFmLnRzdi5neiA9ICIsIGxlbmd0aChtaXNzaW5nX2lkcykpKQppZiAobGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJzbnYtY29uc2Vuc3VzLXBsdXMtaG90c3BvdHMtc2FtcGxlcy1taXNzaW5nLWluLWhpc3RvbG9naWVzLnRzdiIKICBtaXNzaW5nX2hpc3RfaWRzX2RmIDwtIHRpYmJsZTo6dGliYmxlKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQgPSBtaXNzaW5nX2hpc3RfaWRzKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYgJT4lIHJlYWRyOjp3cml0ZV90c3YoZmlsZS5wYXRoKHJlc3VsdHNfZGlyLCBvdXRwdXRfZmlsZSkpCiAgbWlzc2luZ19oaXN0X2lkc19kZgp9CnByaW50KHBhc3RlKCJETkEgYmlvc3BlY2ltZW4gaW4gc252LWNvbnNlbnN1cy1wbHVzLWhvdHNwb3RzLm1hZi50c3YuZ3ogbWlzc2luZyBpbiBoaXN0b2xnaWVzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpKSkKYGBgCgotIFNOViBER0QgTUFGIGZpbGUgKHNudi1kZ2QubWFmLnRzdi5neikKYGBge3J9CiMgY2hlY2sgdGhhdCBhbGwgYmlvc3BlY2ltZW4gSURzIGFyZSBpbiB0aGUgZmlsZQpiaW9zcGVjaW1lbl9pZHMgPC0gZGF0YS50YWJsZTo6ZnJlYWQoZmlsZS5wYXRoKGRhdGFfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbnYtZGdkLm1hZi50c3YuZ3oiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudGFibGUgPSBGQUxTRSkgJT4lCiAgZHBseXI6OnB1bGwoVHVtb3JfU2FtcGxlX0JhcmNvZGUpICU+JQogIHVuaXF1ZSgpCmhpc3RfaWRzIDwtIGhpc3RfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihleHBlcmltZW50YWxfc3RyYXRlZ3kgJWluJSBjKCJXR1MiLCAiV1hTIiwgIlRhcmdldGVkIFNlcXVlbmNpbmciKSwKICAgICAgICAgICAgICAgIGlzLm5hKFJOQV9saWJyYXJ5KSwKICAgICAgICAgICAgICAgIHNhbXBsZV90eXBlID09ICJUdW1vciIsCiAgICAgICAgICAgICAgICBjb2hvcnQgPT0gIkRHRCIpICU+JQogIGRwbHlyOjpwdWxsKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQpCm1pc3NpbmdfaWRzIDwtIHNldGRpZmYoaGlzdF9pZHMsIGJpb3NwZWNpbWVuX2lkcykKbWlzc2luZ19oaXN0X2lkcyA8LSBzZXRkaWZmKGJpb3NwZWNpbWVuX2lkcywgaGlzdF9pZHMpCmlmIChsZW5ndGgobWlzc2luZ19pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJoaXN0b2xvZ2llcy1zYW1wbGVzLW1pc3NpbmctaW4tc252LWRnZC50c3YiCiAgbWlzc2luZ19pZHNfZGYgPC0gbWlzc2luZ19iaW9zcGVjaW1lbl90YWJsZShoaXN0X2RmLCBtaXNzaW5nX2lkcywgb3V0cHV0X2ZpbGUpCiAgbWlzc2luZ19pZHNfZGYKfQpwcmludChwYXN0ZSgiRE5BIGJpb3NwZWNpbWVuIGluIGhpc3RvbGdpZXMgbWlzc2luZyBpbiBzbnYtZGdkLm1hZi50c3YuZ3ogPSAiLCBsZW5ndGgobWlzc2luZ19pZHMpKSkKaWYgKGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAic252LWRnZC1zYW1wbGVzLW1pc3NpbmctaW4taGlzdG9sb2dpZXMudHN2IgogIG1pc3NpbmdfaGlzdF9pZHNfZGYgPC0gdGliYmxlOjp0aWJibGUoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCA9IG1pc3NpbmdfaGlzdF9pZHMpCiAgbWlzc2luZ19oaXN0X2lkc19kZiAlPiUgcmVhZHI6OndyaXRlX3RzdihmaWxlLnBhdGgocmVzdWx0c19kaXIsIG91dHB1dF9maWxlKSkKICBtaXNzaW5nX2hpc3RfaWRzX2RmCn0KcHJpbnQocGFzdGUoIkROQSBiaW9zcGVjaW1lbiBpbiBzbnYtZGdkLm1hZi50c3YuZ3ogbWlzc2luZyBpbiBoaXN0b2xnaWVzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpKSkKYGBgCgotIFNWIE1hbnRhIGZpbGUgKHN2LW1hbnRhLnRzdi5neikKYGBge3J9CiMgY2hlY2sgdGhhdCBhbGwgYmlvc3BlY2ltZW4gSURzIGFyZSBpbiB0aGUgZmlsZQpiaW9zcGVjaW1lbl9pZHMgPC0gZGF0YS50YWJsZTo6ZnJlYWQoZmlsZS5wYXRoKGRhdGFfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdi1tYW50YS50c3YuZ3oiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudGFibGUgPSBGQUxTRSkgJT4lCiAgZHBseXI6OnB1bGwoS2lkcy5GaXJzdC5CaW9zcGVjaW1lbi5JRC5UdW1vcikgJT4lCiAgdW5pcXVlKCkKaGlzdF9pZHMgPC0gaGlzdF9kZiAlPiUKICBkcGx5cjo6ZmlsdGVyKGV4cGVyaW1lbnRhbF9zdHJhdGVneSAlaW4lIGMoIldHUyIsICJXWFMiLCAiVGFyZ2V0ZWQgU2VxdWVuY2luZyIpLAogICAgICAgICAgICAgICAgaXMubmEoUk5BX2xpYnJhcnkpLAogICAgICAgICAgICAgICAgc2FtcGxlX3R5cGUgPT0gIlR1bW9yIiwKICAgICAgICAgICAgICAgIGNvaG9ydCAhPSAiREdEIikgJT4lCiAgZHBseXI6OnB1bGwoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCkKbWlzc2luZ19pZHMgPC0gc2V0ZGlmZihoaXN0X2lkcywgYmlvc3BlY2ltZW5faWRzKQptaXNzaW5nX2hpc3RfaWRzIDwtIHNldGRpZmYoYmlvc3BlY2ltZW5faWRzLCBoaXN0X2lkcykKaWYgKGxlbmd0aChtaXNzaW5nX2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImhpc3RvbG9naWVzLXNhbXBsZXMtbWlzc2luZy1pbi1zdi1tYW50YSIKICBtaXNzaW5nX2lkc19kZiA8LSBtaXNzaW5nX2Jpb3NwZWNpbWVuX3RhYmxlKGhpc3RfZGYsIG1pc3NpbmdfaWRzLCBvdXRwdXRfZmlsZSkKICBtaXNzaW5nX2lkc19kZgp9CnByaW50KHBhc3RlKCJETkEgYmlvc3BlY2ltZW4gaW4gaGlzdG9sZ2llcyBtaXNzaW5nIGluIHN2LW1hbnRhLnRzdi5neiA9ICIsIGxlbmd0aChtaXNzaW5nX2lkcykpKQppZiAobGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJzdi1tYW50YS1zYW1wbGVzLW1pc3NpbmctaW4taGlzdG9sb2dpZXMudHN2IgogIG1pc3NpbmdfaGlzdF9pZHNfZGYgPC0gdGliYmxlOjp0aWJibGUoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCA9IG1pc3NpbmdfaGlzdF9pZHMpCiAgbWlzc2luZ19oaXN0X2lkc19kZiAlPiUgcmVhZHI6OndyaXRlX3RzdihmaWxlLnBhdGgocmVzdWx0c19kaXIsIG91dHB1dF9maWxlKSkKICBtaXNzaW5nX2hpc3RfaWRzX2RmCn0KcHJpbnQocGFzdGUoIkROQSBiaW9zcGVjaW1lbiBpbiBzdi1tYW50YS50c3YuZ3ogbWlzc2luZyBpbiBoaXN0b2xnaWVzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpKSkKYGBgCgotIEJpb3NwZWNpbWVuIHRvIGJlZCBmaWxlIG1hcHBpbmcgKGJpb3NwZWNpbWVuX2lkX3RvX2JlZF9tYXAudHN2KQpgYGB7cn0KIyBjaGVjayB0aGF0IGFsbCBiaW9zcGVjaW1lbiBJRHMgaGF2ZSBhc3NvY2lhdGVkIHdpdGggYSBiZWQgZmlsZQpiaW9zcGVjaW1lbl9pZHMgPC0gcmVhZHI6OnJlYWRfdHN2KGZpbGUucGF0aChkYXRhX2RpciwgImJpb3NwZWNpbWVuX2lkX3RvX2JlZF9tYXAudHN2IikpICU+JQogIGRwbHlyOjpwdWxsKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQpICU+JQogIHVuaXF1ZSgpCmhpc3RfaWRzIDwtIGhpc3RfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihleHBlcmltZW50YWxfc3RyYXRlZ3kgJWluJSBjKCJXR1MiLCAiV1hTIiwgIlRhcmdldGVkIFNlcXVlbmNpbmciKSwKICAgICAgICAgICAgICAgIGlzLm5hKFJOQV9saWJyYXJ5KSwKICAgICAgICAgICAgICAgIHNhbXBsZV90eXBlID09ICJUdW1vciIsCiAgICAgICAgICAgICAgICBjb2hvcnQgIT0gIkRHRCIpICU+JQogIGRwbHlyOjpwdWxsKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQpCm1pc3NpbmdfaWRzIDwtIHNldGRpZmYoaGlzdF9pZHMsIGJpb3NwZWNpbWVuX2lkcykKbWlzc2luZ19oaXN0X2lkcyA8LSBzZXRkaWZmKGJpb3NwZWNpbWVuX2lkcywgaGlzdF9pZHMpCmlmIChsZW5ndGgobWlzc2luZ19pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJoaXN0b2xvZ2llcy1zYW1wbGVzLW1pc3NpbmctaW4tYmlvc3BlY2ltZW5faWRfdG9fYmVkX21hcC50c3YiCiAgbWlzc2luZ19pZHNfZGYgPC0gbWlzc2luZ19iaW9zcGVjaW1lbl90YWJsZShoaXN0X2RmLCBtaXNzaW5nX2lkcywgb3V0cHV0X2ZpbGUpCiAgbWlzc2luZ19pZHNfZGYKfQpwcmludChwYXN0ZSgiRE5BIGJpb3NwZWNpbWVuIGluIGhpc3RvbGdpZXMgbWlzc2luZyBpbiBiaW9zcGVjaW1lbl9pZF90b19iZWRfbWFwLnRzdiA9ICIsIGxlbmd0aChtaXNzaW5nX2lkcykpKQppZiAobGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJiaW9zcGVjaW1lbl9pZF90b19iZWRfbWFwLXNhbXBsZXMtbWlzc2luZy1pbi1oaXN0b2xvZ2llcy50c3YiCiAgbWlzc2luZ19oaXN0X2lkc19kZiA8LSB0aWJibGU6OnRpYmJsZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gbWlzc2luZ19oaXN0X2lkcykKICBtaXNzaW5nX2hpc3RfaWRzX2RmICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYKfQpwcmludChwYXN0ZSgiRE5BIGJpb3NwZWNpbWVuIGluIGJpb3NwZWNpbWVuX2lkX3RvX2JlZF9tYXAudHN2IG1pc3NpbmcgaW4gaGlzdG9sZ2llcyA9ICIsIGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSkpCmBgYAoKIyMjIyBDaGVjayBSTkEgc3BsaWNlIGV2ZW50cyBhbmQgZnVzaW9ucyBiaW9zcGVjaW1lbiBJRHMKCi0gck1BVFMgZmlsZSAoc3BsaWNlLWV2ZW50cy1ybWF0cy50c3YuZ3opCmBgYHtyfQojIGNoZWNrIHRoYXQgYWxsIGJpb3NwZWNpbWVuIElEcyBhcmUgaW4gdGhlIGZpbGUKYmlvc3BlY2ltZW5faWRzIDwtIGRhdGEudGFibGU6OmZyZWFkKGZpbGUucGF0aChkYXRhX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BsaWNlLWV2ZW50cy1ybWF0cy50c3YuZ3oiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudGFibGUgPSBGQUxTRSkgJT4lCiAgZHBseXI6OnB1bGwoc2FtcGxlX2lkKSAlPiUKICB1bmlxdWUoKQpoaXN0X2lkcyA8LSBoaXN0X2RmICU+JQogIGRwbHlyOjpmaWx0ZXIoZXhwZXJpbWVudGFsX3N0cmF0ZWd5ID09ICJSTkEtU2VxIiwKICAgICAgICAgICAgICAgIHNhbXBsZV90eXBlID09ICJUdW1vciIsCiAgICAgICAgICAgICAgICBjb2hvcnQgIT0gIlRDR0EiKSAlPiUKICBkcGx5cjo6cHVsbChLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEKQptaXNzaW5nX2lkcyA8LSBzZXRkaWZmKGhpc3RfaWRzLCBiaW9zcGVjaW1lbl9pZHMpCm1pc3NpbmdfaGlzdF9pZHMgPC0gc2V0ZGlmZihiaW9zcGVjaW1lbl9pZHMsIGhpc3RfaWRzKQppZiAobGVuZ3RoKG1pc3NpbmdfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAiaGlzdG9sb2dpZXMtc2FtcGxlcy1taXNzaW5nLWluLXNwbGljZS1ldmVudHMtcm1hdHMudHN2IgogIG1pc3NpbmdfaWRzX2RmIDwtIG1pc3NpbmdfYmlvc3BlY2ltZW5fdGFibGUoaGlzdF9kZiwgbWlzc2luZ19pZHMsIG91dHB1dF9maWxlKQogIG1pc3NpbmdfaWRzX2RmCn0KcHJpbnQocGFzdGUoIlJOQSBiaW9zcGVjaW1lbiBpbiBoaXN0b2xnaWVzIG1pc3NpbmcgaW4gc3BsaWNlLWV2ZW50cy1ybWF0cy50c3YuZ3ogPSAiLCBsZW5ndGgobWlzc2luZ19pZHMpKSkKaWYgKGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAic3BsaWNlLWV2ZW50cy1ybWF0cy1zYW1wbGVzLW1pc3NpbmctaW4taGlzdG9sb2dpZXMudHN2IgogIG1pc3NpbmdfaGlzdF9pZHNfZGYgPC0gdGliYmxlOjp0aWJibGUoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCA9IG1pc3NpbmdfaGlzdF9pZHMpCiAgbWlzc2luZ19oaXN0X2lkc19kZiAlPiUgcmVhZHI6OndyaXRlX3RzdihmaWxlLnBhdGgocmVzdWx0c19kaXIsIG91dHB1dF9maWxlKSkKICBtaXNzaW5nX2hpc3RfaWRzX2RmCn0KcHJpbnQocGFzdGUoIlJOQSBiaW9zcGVjaW1lbiBpbiBzcGxpY2UtZXZlbnRzLXJtYXRzLnRzdi5neiBtaXNzaW5nIGluIGhpc3RvbGdpZXMgPSAiLCBsZW5ndGgobWlzc2luZ19oaXN0X2lkcykpKQpgYGAKCi0gQW5ub0Z1c2UgZmlsZSAoZnVzaW9uLWFubm9GdXNlLnRzdi5neikKYGBge3J9CiMgY2hlY2sgdGhhdCBhbGwgYmlvc3BlY2ltZW4gSURzIGFyZSBpbiB0aGUgZmlsZQpiaW9zcGVjaW1lbl9pZHMgPC0gcmVhZHI6OnJlYWRfdHN2KGZpbGUucGF0aChkYXRhX2RpciwgImZ1c2lvbi1hbm5vRnVzZS50c3YuZ3oiKSkgJT4lCiAgZHBseXI6OnB1bGwoU2FtcGxlKSAlPiUKICB1bmlxdWUoKQpoaXN0X2lkcyA8LSBoaXN0X2RmICU+JQogIGRwbHlyOjpmaWx0ZXIoZXhwZXJpbWVudGFsX3N0cmF0ZWd5ID09ICJSTkEtU2VxIiB8IAogICAgICAgICAgICAgICAgICBleHBlcmltZW50YWxfc3RyYXRlZ3kgPT0gIlRhcmdldGVkIFNlcXVlbmNpbmciLCAKICAgICAgICAgICAgICAgICFpcy5uYShSTkFfbGlicmFyeSksIAogICAgICAgICAgICAgICAgc2FtcGxlX3R5cGUgPT0gIlR1bW9yIiwKICAgICAgICAgICAgICAgICFjb2hvcnQgJWluJSBjKCJER0QiLCAiVENHQSIpKSAlPiUKICBkcGx5cjo6cHVsbChLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEKQptaXNzaW5nX2lkcyA8LSBzZXRkaWZmKGhpc3RfaWRzLCBiaW9zcGVjaW1lbl9pZHMpCm1pc3NpbmdfaGlzdF9pZHMgPC0gc2V0ZGlmZihiaW9zcGVjaW1lbl9pZHMsIGhpc3RfaWRzKQppZiAobGVuZ3RoKG1pc3NpbmdfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAiaGlzdG9sb2dpZXMtc2FtcGxlcy1taXNzaW5nLWluLWZ1c2lvbi1hbm5vRnVzZS50c3YiCiAgbWlzc2luZ19pZHNfZGYgPC0gbWlzc2luZ19iaW9zcGVjaW1lbl90YWJsZShoaXN0X2RmLCBtaXNzaW5nX2lkcywgb3V0cHV0X2ZpbGUpCiAgbWlzc2luZ19pZHNfZGYKfQpwcmludChwYXN0ZSgiUk5BIGJpb3NwZWNpbWVuIGluIGhpc3RvbGdpZXMgbWlzc2luZyBpbiBmdXNpb24tYW5ub0Z1c2UudHN2Lmd6ID0gIiwgbGVuZ3RoKG1pc3NpbmdfaWRzKSkpCmlmIChsZW5ndGgobWlzc2luZ19oaXN0X2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImZ1c2lvbi1hbm5vRnVzZS1zYW1wbGVzLW1pc3NpbmctaW4taGlzdG9sb2dpZXMudHN2IgogIG1pc3NpbmdfaGlzdF9pZHNfZGYgPC0gdGliYmxlOjp0aWJibGUoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCA9IG1pc3NpbmdfaGlzdF9pZHMpCiAgbWlzc2luZ19oaXN0X2lkc19kZiAlPiUgcmVhZHI6OndyaXRlX3RzdihmaWxlLnBhdGgocmVzdWx0c19kaXIsIG91dHB1dF9maWxlKSkKICBtaXNzaW5nX2hpc3RfaWRzX2RmCn0KcHJpbnQocGFzdGUoIlJOQSBiaW9zcGVjaW1lbiBpbiBmdXNpb24tYW5ub0Z1c2UudHN2Lmd6IG1pc3NpbmcgaW4gaGlzdG9sZ2llcyA9ICIsIGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSkpCmBgYAoKLSBBcnJpYmEgZnVzaW9uIGZpbGUgKGZ1c2lvbi1hcnJpYmEudHN2Lmd6KQpgYGB7cn0KIyBjaGVjayB0aGF0IGFsbCBiaW9zcGVjaW1lbiBJRHMgYXJlIGluIHRoZSBmaWxlCmJpb3NwZWNpbWVuX2lkcyA8LSByZWFkcjo6cmVhZF90c3YoZmlsZS5wYXRoKGRhdGFfZGlyLCAiZnVzaW9uLWFycmliYS50c3YuZ3oiKSkgJT4lCiAgZHBseXI6OnB1bGwodHVtb3JfaWQpICU+JQogIHVuaXF1ZSgpCmhpc3RfaWRzIDwtIGhpc3RfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihleHBlcmltZW50YWxfc3RyYXRlZ3kgPT0gIlJOQS1TZXEiIHwKICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX3N0cmF0ZWd5ID09ICJUYXJnZXRlZCBTZXF1ZW5jaW5nIiwgCiAgICAgICAgICAgICAgICAhaXMubmEoUk5BX2xpYnJhcnkpLCAKICAgICAgICAgICAgICAgIHNhbXBsZV90eXBlID09ICJUdW1vciIsCiAgICAgICAgICAgICAgICAhY29ob3J0ICVpbiUgYygiREdEIiwgIlRDR0EiKSkgJT4lCiAgZHBseXI6OnB1bGwoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCkKbWlzc2luZ19pZHMgPC0gc2V0ZGlmZihoaXN0X2lkcywgYmlvc3BlY2ltZW5faWRzKQptaXNzaW5nX2hpc3RfaWRzIDwtIHNldGRpZmYoYmlvc3BlY2ltZW5faWRzLCBoaXN0X2lkcykKaWYgKGxlbmd0aChtaXNzaW5nX2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImhpc3RvbG9naWVzLXNhbXBsZXMtbWlzc2luZy1pbi1mdXNpb24tYW5ub0Z1c2UudHN2IgogIG1pc3NpbmdfaWRzX2RmIDwtIG1pc3NpbmdfYmlvc3BlY2ltZW5fdGFibGUoaGlzdF9kZiwgbWlzc2luZ19pZHMsIG91dHB1dF9maWxlKQogIG1pc3NpbmdfaWRzX2RmCn0KcHJpbnQocGFzdGUoIlJOQSBiaW9zcGVjaW1lbiBpbiBoaXN0b2xnaWVzIG1pc3NpbmcgaW4gZnVzaW9uLWFycmliYS50c3YuZ3ogPSAiLCBsZW5ndGgobWlzc2luZ19pZHMpKSkKaWYgKGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAiZnVzaW9uLWFubm9GdXNlLXNhbXBsZXMtbWlzc2luZy1pbi1oaXN0b2xvZ2llcy50c3YiCiAgbWlzc2luZ19oaXN0X2lkc19kZiA8LSB0aWJibGU6OnRpYmJsZShLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEID0gbWlzc2luZ19oaXN0X2lkcykKICBtaXNzaW5nX2hpc3RfaWRzX2RmICU+JSByZWFkcjo6d3JpdGVfdHN2KGZpbGUucGF0aChyZXN1bHRzX2Rpciwgb3V0cHV0X2ZpbGUpKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYKfQpwcmludChwYXN0ZSgiUk5BIGJpb3NwZWNpbWVuIGluIGZ1c2lvbi1hcnJpYmEudHN2Lmd6IG1pc3NpbmcgaW4gaGlzdG9sZ2llcyA9ICIsIGxlbmd0aChtaXNzaW5nX2hpc3RfaWRzKSkpCmBgYAoKLSBTVEFSLUZ1c2lvbiBmaWxlIChmdXNpb24tc3RhcmZ1c2lvbi50c3YuZ3opCmBgYHtyfQojIGNoZWNrIHRoYXQgYWxsIGJpb3NwZWNpbWVuIElEcyBhcmUgaW4gdGhlIGZpbGUKYmlvc3BlY2ltZW5faWRzIDwtIHJlYWRyOjpyZWFkX3RzdihmaWxlLnBhdGgoZGF0YV9kaXIsICJmdXNpb24tc3RhcmZ1c2lvbi50c3YuZ3oiKSkgJT4lCiAgZHBseXI6OnB1bGwodHVtb3JfaWQpICU+JQogIHVuaXF1ZSgpCmhpc3RfaWRzIDwtIGhpc3RfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihleHBlcmltZW50YWxfc3RyYXRlZ3kgPT0gIlJOQS1TZXEiIHwKICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsX3N0cmF0ZWd5ID09ICJUYXJnZXRlZCBTZXF1ZW5jaW5nIiwKICAgICAgICAgICAgICAgICFpcy5uYShSTkFfbGlicmFyeSksIAogICAgICAgICAgICAgICAgc2FtcGxlX3R5cGUgPT0gIlR1bW9yIiwKICAgICAgICAgICAgICAgICFjb2hvcnQgJWluJSBjKCJER0QiLCAiVENHQSIpKSAlPiUKICBkcGx5cjo6cHVsbChLaWRzX0ZpcnN0X0Jpb3NwZWNpbWVuX0lEKQptaXNzaW5nX2lkcyA8LSBzZXRkaWZmKGhpc3RfaWRzLCBiaW9zcGVjaW1lbl9pZHMpCm1pc3NpbmdfaGlzdF9pZHMgPC0gc2V0ZGlmZihiaW9zcGVjaW1lbl9pZHMsIGhpc3RfaWRzKQppZiAobGVuZ3RoKG1pc3NpbmdfaWRzKSA+IDApIHsKICBvdXRwdXRfZmlsZSA8LSAiaGlzdG9sb2dpZXMtc2FtcGxlcy1taXNzaW5nLWluLWZ1c2lvbi1zdGFyZnVzaW9uLnRzdiIKICBtaXNzaW5nX2lkc19kZiA8LSBtaXNzaW5nX2Jpb3NwZWNpbWVuX3RhYmxlKGhpc3RfZGYsIG1pc3NpbmdfaWRzLCBvdXRwdXRfZmlsZSkKICBtaXNzaW5nX2lkc19kZgp9CnByaW50KHBhc3RlKCJSTkEgYmlvc3BlY2ltZW4gaW4gaGlzdG9sZ2llcyBtaXNzaW5nIGluIGZ1c2lvbi1zdGFyZnVzaW9uLnRzdi5neiA9ICIsIGxlbmd0aChtaXNzaW5nX2lkcykpKQppZiAobGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpID4gMCkgewogIG91dHB1dF9maWxlIDwtICJmdXNpb24tc3RhcmZ1c2lvbi1zYW1wbGVzLW1pc3NpbmctaW4taGlzdG9sb2dpZXMudHN2IgogIG1pc3NpbmdfaGlzdF9pZHNfZGYgPC0gdGliYmxlOjp0aWJibGUoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCA9IG1pc3NpbmdfaGlzdF9pZHMpCiAgbWlzc2luZ19oaXN0X2lkc19kZiAlPiUgcmVhZHI6OndyaXRlX3RzdihmaWxlLnBhdGgocmVzdWx0c19kaXIsIG91dHB1dF9maWxlKSkKICBtaXNzaW5nX2hpc3RfaWRzX2RmCn0KcHJpbnQocGFzdGUoIlJOQSBiaW9zcGVjaW1lbiBpbiBmdXNpb24tc3RhcmZ1c2lvbi50c3YuZ3ogbWlzc2luZyBpbiBoaXN0b2xnaWVzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpKSkKYGBgCgotIEZ1c2lvbiBER0QgZmlsZSAoZnVzaW9uLWRnZC50c3YuZ3opCmBgYHtyfQojIGNoZWNrIHRoYXQgYWxsIGJpb3NwZWNpbWVuIElEcyBhcmUgaW4gdGhlIGZpbGUKYmlvc3BlY2ltZW5faWRzIDwtIHJlYWRyOjpyZWFkX3RzdihmaWxlLnBhdGgoZGF0YV9kaXIsICJmdXNpb24tZGdkLnRzdi5neiIpKSAlPiUKICBkcGx5cjo6cHVsbChTYW1wbGUpICU+JQogIHVuaXF1ZSgpCmhpc3RfaWRzIDwtIGhpc3RfZGYgJT4lCiAgZHBseXI6OmZpbHRlcihleHBlcmltZW50YWxfc3RyYXRlZ3kgJWluJSBjKCJSTkEtU2VxIiwgIlRhcmdldGVkIFNlcXVlbmNpbmciKSwgCiAgICAgICAgICAgICAgICAhaXMubmEoUk5BX2xpYnJhcnkpLAogICAgICAgICAgICAgICAgc2FtcGxlX3R5cGUgPT0gIlR1bW9yIiwKICAgICAgICAgICAgICAgIGNvaG9ydCA9PSAiREdEIikgJT4lCiAgZHBseXI6OnB1bGwoS2lkc19GaXJzdF9CaW9zcGVjaW1lbl9JRCkKbWlzc2luZ19pZHMgPC0gc2V0ZGlmZihoaXN0X2lkcywgYmlvc3BlY2ltZW5faWRzKQptaXNzaW5nX2hpc3RfaWRzIDwtIHNldGRpZmYoYmlvc3BlY2ltZW5faWRzLCBoaXN0X2lkcykKaWYgKGxlbmd0aChtaXNzaW5nX2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImhpc3RvbG9naWVzLXNhbXBsZXMtbWlzc2luZy1pbi1mdXNpb24tZGdkLnRzdiIKICBtaXNzaW5nX2lkc19kZiA8LSBtaXNzaW5nX2Jpb3NwZWNpbWVuX3RhYmxlKGhpc3RfZGYsIG1pc3NpbmdfaWRzLCBvdXRwdXRfZmlsZSkKICBtaXNzaW5nX2lkc19kZgp9CnByaW50KHBhc3RlKCJSTkEgYmlvc3BlY2ltZW4gaW4gaGlzdG9sZ2llcyBtaXNzaW5nIGluIGZ1c2lvbi1kZ2QudHN2Lmd6ID0gIiwgbGVuZ3RoKG1pc3NpbmdfaWRzKSkpCmlmIChsZW5ndGgobWlzc2luZ19oaXN0X2lkcykgPiAwKSB7CiAgb3V0cHV0X2ZpbGUgPC0gImZ1c2lvbi1kZ2Qtc2FtcGxlcy1taXNzaW5nLWluLWhpc3RvbG9naWVzLnRzdiIKICBtaXNzaW5nX2hpc3RfaWRzX2RmIDwtIHRpYmJsZTo6dGliYmxlKEtpZHNfRmlyc3RfQmlvc3BlY2ltZW5fSUQgPSBtaXNzaW5nX2hpc3RfaWRzKQogIG1pc3NpbmdfaGlzdF9pZHNfZGYgJT4lIHJlYWRyOjp3cml0ZV90c3YoZmlsZS5wYXRoKHJlc3VsdHNfZGlyLCBvdXRwdXRfZmlsZSkpCiAgbWlzc2luZ19oaXN0X2lkc19kZgp9CnByaW50KHBhc3RlKCJSTkEgYmlvc3BlY2ltZW4gaW4gZnVzaW9uLWRnZC50c3YuZ3ogbWlzc2luZyBpbiBoaXN0b2xnaWVzID0gIiwgbGVuZ3RoKG1pc3NpbmdfaGlzdF9pZHMpKSkKYGBgCgojIyMgU2Vzc2lvbiBJbmZvCgpgYGB7ciBzZXNzaW9uaW5mb30Kc2Vzc2lvbkluZm8oKSAKYGBgCg==